Blog

October 2020 work summary

October kept me real busy with phpBB work. But almost all of it was for two longstanding jobs. Other work coming in was rather small and ancillary.

I recently created this post describing my work on a Delphi Forums to phpBB conversion. I’ll add another post soon discussing the work I’ve done since this post. It amounted to eighteen hours of work during October.

Then there was the work for a large commercial customer that’s been underway since February. Most of my time was spent on this project. In October the focus is to figure out how to replace their existing proprietary OAuth interface (on a phpBB 3.0 board) with an extension. To say the least it’s a learning experience! I spent 46 hours on this in October and we’re not out of the woods yet by any means. My first thought was to update and inject their old phpBB 3.0 code where possible in 3.3. But the client nixed that approach as he wanted a clean, best practices approach. So we ended up hacking the Bitly OAuth authentication mechanism to connect to his authentication server instead. That in itself was a major time consuming project, but it was successful. The challenge now is to make it work through an extension. phpBB kind of gets in the way because it has no method to allow users to enter OAuth ID and secrets for a new service in the ACP authentication interface. So these keys must be entered in a separate page for the extension. There are a few events I can use to tie into if needed, but the client really wants to avoid using these if possible. Anyhow, it remains a challenge and requires a lot of adding debug statements to phpBB’s base code to figure out what’s going on. I think I may be close to getting a solution, but this is very advanced phpBB stuff. If worst comes to worst, I’ll hand it over to a more experienced phpBB developer.

Other work in October:

  • I moved a client frustrated with his hosting to Siteground. The client had moved the board’s files to the new hosting, but not database. So I had to do that and create a database and database user for the board and import the database. I then had to fix the config.php file to point to the newly loaded database. I then upgraded from the board from phpBB 3.2.10 to phpBB 3.3.1. I changed the spambot countermeasure to reCaptcha V3. I then went into the client’s domain registrar and pointed nameservers to Siteground.
  • Updated a board from phpBB 3.3.0 to 3.3.1. The client tried to use Automatic Update package but it screwed things up again. There were lots of FTP errors uploading and downloading to this particular host, so there were multiple attempts to move them all successfully before I could do the update.
  • A client reported issues with my digests mod on his phpBB 3.0 board. I verified Digests 2.2.27 is correctly installed. Client also complained of other issues when trying to post text and private messages. These appear to be due to using Kanji characters in UTF-8 text fields where the collation is wrong.
  • Certain Tapatalk servers could not be reached, so the Tapatalk extension could not be used by board users. The issue turned out to be on Tapatalk’s side since I got errors trying to use curl to contact the server. I complained to Tapatalk and about a day later the issue went away by itself. Later I upgraded Plesk to Obsidian 18.0.31 and updated 9 packages on their server.
  • Upgraded a board from phpBB 3.0.11 to phpBB 3.3.1. No issues occurred during the upgrade. I just had to stretch and place a logo. The board has 48,000 posts. Used the generic prosilver style. I disabled the contact form and installed the reCaptcha V3 spambot countermeasure. Created a home link on the breadcrumb menu.
  • Upgraded a board from phpBB 3.0.14 to phpBB 3.3.1. I couldn’t get FTP to work so did all file transfers using the file manager. I had to comment out last line of .htaccess file to disable loading PHP 5.6. Installed the mentions extension and tested it — seemed to work. Some 777 folders had 700 permissions — warned client about this. Disabled the contact form. Installed reCAPTCHA V3 spambot countermeasure. Deleted about six dead extension links on the system tab.
  • Two issues were reported by a client on their phpBB 3.2 board. First, the posting body text box was tiny. Underlying issue was PHP 7.4 was automatically enabled on phpBB 3.2.2. Changed that in cPanel and the issue went away. Second issue was that forum rules were showing even if you are logged in. Since these are properties of each forum, there is no way to get around this. As I was doing the work, a web hosting Securi security package whitelisted my IP and kept me from doing any work. I disabled ModSecurity but couldn’t disable Securi. Client did that for me. Client said Securi was disabled. I found a Securi configuration file with board database credentials that I commented out and things became much more stable. I was then able to upgrade phpBB to version 3.3.1. Due to timeouts on the hosting, I had to upgrade the board on my machine and upload it. There were lots of issues after the upgrade. Certain ACP tabs would not come up. View topic and posting worked sporadically, otherwise white screens occurred. After a lot of analysis, it looked like some existing Forumhulp extensions did not work reliably on phpBB 3.3 and hadn’t been updated by the extension author. Tried some hacks hoping they would work but the problems persisted so I left them all disabled. Suggested leaving ForumHulp extensions and Securi disabled.
  • Fixed a couple WordPress issues for a client, mainly with the StopBadBots plugin by uploading the most recent version. Also fixed a “Constant WP_MEMORY_LIMIT already defined” notice by removing it from the bottom of the wp-config.php file. It seemed to be cached but eventually went away. Inquired about the plugin to backup to Google Drive. Purchased extra Google Drive storage, installed the UpdraftPlus plugin and configured it to work with Google Drive. Started manual backup. Provided link to phpBB Auto DB backup extension. With UpdraftPlus premium, the phpBB board directory could also be backed up.
  • Upgraded a board from phpBB 3.2.9 to 3.3.1. PHP was already set to version 7.3 but no issues using phpBB were reported. (phpBB 3.2 works on versions of PHP through version 7.2) There was an issue of no attachments allowed in private messaging. No attachment group was allowed for PMs. Change the attachment groups for private messaging to match what was used for various forums. I also updated Cleantalk, Digests and Stop Forum Spam extensions.
  • Issued a new edition of my book and move the publisher to Lulu.com. Details here.

September 2020 work summary

September was a bit slower than August, at least in terms of the number of jobs I was working on. But two clients kept me pretty busy.

I documented work on a Delphi Forums to phpBB conversion in this post. That work continues and is pretty challenging and tedious at times.

Also, the commercial work for a major client continues, in spurts. This client has custom headers and footers from the main web site that change frequently. I created an extension to do this a different way compared to the way they are doing it on PHP 5.6. They were replacing files in phpBB’s caceh folder. My solution is to store and retrieve these changes in/from the phpbb_config_text table instead. The extension’s cron update them at intervals set on an ACP page. The remaining technical challenge is to stand up an OAuth interface which they created for phpBB 3.0, but which will work different on phpBB 3.3, and use an extension. Then an alpha and beta stage is likely to begin. With luck the project will wrap up in the next few months.

Other jobs in September included:

  • Upgraded two boards for a commercial client from phpBB 3.2.8 to 3.3.1. I discovered that the AllanStyle SUBSILVER style wasn’t quite ready for phpBB 3.3 and I had to make changes to the navigation template to match changes in prosilver to get the breadcrumbs to work right. Also did some rearranging of forums for them and created a forum link for a forum. Also needed to rework the search engine on both boards to find more common terms and change some group forum permissions.
  • Upgraded a board from phpBB 3.2.8 to 3.3.1. I changed PHP from 5.6 to 7.2. Updated Advertisement management, Google Analytics, Recent Topics, Thanks for the Posts, Gallery and Tapatalk extensions. Added a new extension: New Topics need Approval and configured the permission for the one forum where it was to be used. The Plesk Let’s Encrypt module was installed, tried to generate a certificate but it doesn’t seem to register. Asked him to discuss that with his web host. Like with the last job, navigation bar template customizations in custom style required some rework due to changes in the prosilver version with phpBB 3.3. Set a new set of reCaptcha V2 keys because it needed to support Invisible type of CAPTCHA. There was an annoying error going into ACP related to a library program Iconv.php. To work around it, I had to change a statement to return false when the character set is not found. I really think this is a bug in the library as I’ve encountered this close to a dozen times for clients in the last year or so. Solutions on phpbb.com haven’t worked.
  • Upgraded a board from phpBB 3.2.8 to 3.3.1. Added three language packs: American English and both casual and formal honorifics German language packs. Changed reCaptcha V2 to use Invisible Captcha.
  • Updated a board from phpBB 3.3.0 to 3.3.1. Updated SEO Metadata extension from version 1.3.0 to 1.4.0. I changed the spambot countermeasure to reCaptcha V3. Recommended disabling contact form.
  • Redid a lot of the work done in February now that this client was ready to move the domain to new hosting. But it was less work than I did in February since the styling was already done. I moved the phpBB 3.0.6 database over, imported it, and upgrade ran without issues. I reenabled the custom style I had created. I changed the spambot countermeasure to reCaptcha V3 and enabled it, disabled contact form.
  • Work that amounted to rehosting but I didn’t have to move 100,000 phpBB Gallery files. The client did that with a little coaching. I did have to move the database. What triggered the rehosting was the client hit a 1GB database quota limit on his shared hosting. He bought some cloud hosting to move the domain’s content there. The files that were moved over by someone else were not in the right spot. I created a domain on the cloud hosting, and populated a database based on extracting it on the old host with phpMyAdmin. I upgraded the board from phpBB 3.2.5 to 3.3.1 because PHP 7.2 was not available. I also upgraded phpBB Gallery, Advanced BBCode Box and Auto DB Backup extensions. I tweaked prosilver’s styling to prosilver to put the logo back up. There was a persistent certificate error until domain is pointing correctly and then Let’s Encrypt certificates could be generated.
  • Upgraded board from phpBB 3.0.12 to 3.3.1. This board is an archive; another one was created for current content. Added the Prolight style and changed background color to red to match the old board. Also replaced and resized the logo and selectively made certain text white so it could be seen easily against the red background. But apparently I misunderstood to client’s custom changes. So later I changed the styling again to meet new requirements, and placed a different logo that I sized at 33% of original size.

Delphi forums to phpBB – Part One

Most of my work is pretty much the same: upgrades and updates to existing phpBB boards. Lately though I’ve been tackling some unusual projects. One of these is to move a Delphi board to phpBB.

Delphi forums are proprietary and are available only on their website. I understand it has no official way to export a Delphi forum. A board there has twenty years of conversations they did not want to lose. A clever user though has figured out how to export the board using YAML.

Example of YAML file for importing

After looking at it, I figured it was cost prohibitive to do. I did a proof of concept for them, demonstrating that I could read the YAML file and get basic user, forum, topic and post information from it, and display it neatly in HTML. I explained that this would be custom work and that it would take a lot of labor, even at my nonprofit rate. I estimated $2000 – $3000 and assumed it was cost prohibitive.

Proof of concept to display user information from YAML file

That was back in February but I was recently given the go ahead to start this project. Which raises the question: how on earth to do something like this?

What convertors from other forum solutions to phpBB that do exist tend to be for phpBB 3.0, and we’re now on phpBB 3.3. And no one has written a Delphi forums converter because it has no export capability. Since then phpBB has evolved, and due to the way post text is now encoded, it’s very challenging to write any new convertor.

Which is why I said if it can be done I would want to populate an old phpBB 2 forum with its data, and convert that to phpBB 3.3. There’s a convertor built into phpBB that does just this. But phpBB 2 became obsolete 13 years ago. However, its database is relatively simple so it should be straightforward to populate from data elsewhere.

But phpBB 2 was built for versions 4 and 5 of PHP, versions now obsolete and dangerous to use, or even acquire. It’s hard to even stand up a PHP 5 environment now. Most web hosting won’t support PHP 5, and mine doesn’t. So I’d have to roll my own development environment with PHP 5.

There are two ways to do this:

  • Via a virtual machine
  • Via a separate machine

I’ve used VitualBox on my Mac for years for standing up virtual machines. While it works, it doesn’t work well on a Mac. It’s a pain to use, particularly if you need to move files between the Mac and the VM.

Because I need PHP 5 for clients generally at least once a month, I decided a separate machine was more practical. So I bought a Raspberry Pi 4 (4GB) for less than $100. The actual machine is about $35 but I added a keyboard, mouse and a book. It took some help online to figure out how to install a web server and PHP 5 for it. The Pi is cheap because it uses RISC-based processors, so it’s not Intel compatible. Also, I could use FTP to move files to it, and using a free VNC viewer, I could work on it from my Mac desktop.

Processing the YAML turned out not to be easy. I tried various things, including PHP’s PECL YAML class, which I couldn’t get to work. I was able to eventually get Symfony’s YAML class to work.

Given the go ahead, I created a phpBB 2 board on my Pi with PHP 5.6 installed. While this worked great, my script wouldn’t run there. Symfony requires PHP 7.2. So I exported the phpBB 2 database and imported it into my Mac where I run PHP 7.4. I would have to populate the database from the YAML files I was given there, and eventually move it back to the Pi when it was time to try to upgrade the database.

Loading the phpbb_users table was not too challenging. A few fields needed to be escaped using mysqli_escape_string so the data could be loaded into the table. Some fields had to be trimmed to fit inside the maximum field length.

phpBB 2 places user data in a number of tables. Topics and posts haven’t been created yet, but there is a phpbb_user_group table. Each user had to belong to a group. Creating a test user on phpBB 2, I learned that it will create a new personal group. Then I had to write some SQL to put all 600+ users into this table. I also needed to populate a number of other columns in the phpbb_users_table. Each should have a new password, but since these users were added in bulk, they share the same password for now. All share the same bogus email address too, since I didn’t have that in the YAML. They will have to change both after the board is converted. Back in the old days, the password was encrypted with a simple md5 hash.

But the customer’s thread YAML wasn’t 100% clean. It wasn’t a major issue, but 22 threads (which amount to topics) wouldn’t parse. Even the good threads though had some issues. Some threads have no name to them. I will have to create a synthetic topic name for them. Some don’t have a forum name either, so those have to go into some sort of catch all forum.

There is a major issue is that the YAML’s attachment information provided a file upload name, but the name is not in the /files folder provided with the YAML. Files seem to have some sort of hash name. This may mean that attachments cannot be imported. If I want to import any attachments, I will have to install the old phpBB 2 attachment mod.

But at least this approach looks viable, if tedious. More learning experiences ahead.

August 2020 work summary

The economy may be hurting but not my personal economy. Demand for my services was high in August, so high it was hard keeping up with all the work coming in. It slowed a little toward the end of the month giving me a bit of a breather.

  • Long, painful, tedious conversion from a phpBB 2.0.19 board to phpBB 3.3.0, with a rehosting to boot. This project took over 3 days. 3.9M posts were converted. The board used the standard prosilver style. (phpBB 2 is so old there was no prosilver style back then. phpBB 2 was obsolete in 2007!) Customized and centered the logo. The board has 287,000 users, mostly spammers. Installed advertisement management and search on navigation bar extensions. Showed client how to place sample ad. Installed Italian language pack. Created a custom style to make future upgrades and updates easier. Had to optimize tables due to slow performance. Database upgrade took about 30 hours and timed out once. Very tedious, time consuming and not very profitable work. Created a new MySQL fulltext search index.
  • Upgraded board from phpBB 3.2.8 to 3.3.0. Installed updated Danish and German casual language packs. Updated the NavBar Search extension to version 3.2.4 and the Tapatalk extension to version 2.1.8. Put old logo back on prosilver_se style, which was also updated to a 3.3.0 version. Changed spambot countermeasure to use reCaptcha V2 invisible. Later, updated client to phpBB 3.3.1 at no extra charge since it was just released.
  • Client wanted to rehost board on new server. On the new host the database had already been moved (presumably by the new web host) but the files had not. So I made a phpBB files archive and moved them over. I then corrected config.php to use the correct database username and password, and changed the password to match the old password. Downgraded PHP to 7.2 since phpBB 3.2.7 was installed. The WordPress part of domain came up fine.
  • Upgraded a board from phpBB 3.0.13-PL1 to phpBB 3.3.1. Tried to replicate the prosilver_se style but had logo placement issues because part of the logo had black within it. Client will be redo the logo, but changes to the stylesheet happened erratically. I wondered if this might be due to a CloudFlare or CDN issue. Installed my latest version of my Smartfeed extension and Google Analytics extension. I changed PHP to 7.3. I disabled the contact form, and created a reCAPTCHA V3 spambot countermeasure. Client had a script that independently queried the number of posts, topics and users to feed to another system. These did not work with the phpBB upgrade. The easiest solution was to rewrite it to call the database directly with mysqli to get the values needed. The board has 134,000 posts. Later there was an issue where the search index was not being indexed. Recreated the index. But the root problem turned out to be a bad configuration value in the phpbb_config table which had to be escaped to get show the correct class namespace. With it, it could then use the correct search engine.
  • Upgrade and rehosting. Moved phpBB 3.2.2 board and database to new Siteground hosting. Lots of issues importing the data into the database (timeouts). Upgraded board to phpBB 3.3.1. Changed registration text to say not to use real name when registering. Installed Filter by Country extension. Let’s Encrypt security certificate could not be installed until domain is transferred. Transferred domain using the client’s registrar. Installed Advertisement management extension and placed sample ad. Placed Donate button on navigation bar pointing to non-existent donate.html on the web root. Later there was some troubleshooting. Newly registered user did not belong to any group and saw a no forums message. Added him to both Newly registered and Registered users group, advised to change permissions for newly registered users using roles. Client said the notification count was incorrect. Might have been due to new notifications being received. Set up the board’s email settings to use SMTP and created an email forwarder associated with the domain. Also created an admin email address. Added email server as an authorized server for sending email, although first attempt showed emails arriving in my spam folder.
  • Troubleshooting. Users were having sporadic logout issues. Changed a number of cookie and server settings. I also made the server generate https URLs and changed permissions to /cache/production and /cache/production/twig to 777, were 755.
  • Updated a client’s board from phpBB from 3.3.0 to 3.3.1. Updated three extensions: Advanced BBCode Box, Precise Similar Topics and Recent Topics to latest versions. Reapplied logo.
  • Upgraded a board from phpBB 3.0.12 to 3.3.1. 305,000 posts. Smooth upgrade with one minor issue: no active style. Changed to make prosilver the active style in database and then the upgrade was able to complete. Installed topic solved extension but it needs per forum configuration, so I sent the client instructions on how to do this. Installed Stop Forum Spam extension, which is currently a release candidate extension for 3.3. Created a custom style based on prosilver. A number of styling changes were desired. Work to replicate the top of the header template was suspended as I needed link to a stylesheet I didn’t have, so I removed that code and added a Home button for now, which turned out to satisfy the client. Hid the site description. Recreated the search index. Disabled the contact form. Installed reCaptcha V3 spambot countermeasure. Added Google Analytics extension. Had to copy over some images to the custom style. reCaptcha V3 has issues: it couldn’t register users and there were curse words on registering when it failed. Reverted to reCaptcha V2 invisible. The main issue turned out to be that all @gmail.com email addresses were banned, and the defined banned list reasons returned curse words because the gmail.com was a blocked domain. Also, there were some obsolete Moderator Control Panel modules that I had to remove by hand in the ACP. Apparently the database cleaner did not get them all. Installed the Ban Hammer extension.
  • Investigation for client to see if non phpBB applications break on upgrade to PHP 7.3. Found only one that broke: a Zencart integration that will need an updated version. Upgraded board from phpBB 3.1.10 to 3.3.1. prosilver_se style was used with customizations, so I created a custom style that inherited from prosilver_se. Board has 773,000 posts and 71,000 attachments. There was lots of hassle getting the styling right. One issue encountered during upgrade: a config_name already existed in the phpbb_config table. Removed the row from the table and the upgrade then was able to complete. Changed PHP to 7.3. Updated 16 extensions. Installed reCaptcha V3. The /files folder had the attachments nested in folders inside of folders. Don’t know why this was, but it predated the upgrade, and caused images not to show in posts. The client assumed the onerous chore of moving these files correctly for display. PHP Gallery was linked from the board and on the navigation bar. It came up fine on PHP 7.
  • Upgraded a generic board with no mods from phpBB 3.0.11 to 3.2.10. No PHP beyond 7.0 was available on the web host, so it limited him to 3.2.10. I chose to upgrade PHP to 5.6 (5.2 was installed) in case there was other software on the domain that would not work on PHP 7.0. I had to edit first line of config.php because it loaded a nonexistent antispam program. Disabled contact form and set spambot countermeasure to reCaptcha V2 invisible. Some folders did not have public write permissions set.
  • Update board from phpBB 3.3.0 to 3.3.1, and changed PHP version from 7.1 to 7.3.
  • Made about $60 in book royalties last month.
  • Continued work for a large commercial client looking to upgrade their board to phpBB 3.3 while maintaining their unique look and customizations from the current phpBB 3.0 board. This month worked on two extensions to replicate logic that was previously done with modifications. The first was to allow moderators and administrators to find topics which had no replies by moderators or administrators, using the existing search interface. This took quite a while to puzzle through, but I was eventually successful. The second is to email an email list if any entry is made to the admin log. After some discussion with the client, I added logic to allow them to not email certain notifications by manually adding them in a text area form field, as these will be too common and thus annoying. I started work on an extension to automatically lock topics more than 60 days old. Thinking about it overnight though I realized there probably was an extension to do this and there is, so I installed that instead. Looking through the remaining work, there should only be one more extension to do. This involves a complex connection between phpBB and the accounting system the client has, which determines who can post in the forum and creates accounts in phpBB. It will require some sort of custom Oauth solution because that’s what they had before. Since styling work was done in July, this may be the last big piece of development work. Doing a test conversion and working out kinks will then be possible. So hopefully this project will be finished by the end of the year. This is interesting work and it’s nice to have a client pay my commercial rate and pay very promptly once a month.

phpBB 3.3.1 release summary

phpBB 3.3.1 was released on August 7, the first update to version 3.3 since 3.3.0 was released in January. You can download it from the downloads page.

If you are still using phpBB 3.2, there’s an update (3.2.10) for it as well, mainly to address a security vulnerability. For more see this page.

Since a security issue was fixed, an update is recommended.

You can read the release highlights here.

There are three new features, something you don’t often see in an update:

  • reCAPTCHA Version 3 is supported as a spambot countermeasure. You need to select it as the new spambot countermeasure and get a new set of keys from the reCAPTCHA site to use it.
  • Profile field types can be enabled and disabled
  • Only one email notification goes out when a topic has had new replies and you are subscribed to a topic. To implement this meant one new table had to be added to the database: phpbb_notification_emails.

One minor feature of the update was due to me: I filed a ticket asking for the inclusion of the DuckDuckGo search bot in the list of known bots. Woo hoo!

Some other things fixed:

  • Full search text searching is faster if you use the PostreSQL database management system
  • Support for FontAwesome Version 5 has been withdrawn
  • You can use multiple emojis in text fields
  • The private messaging bug was fixed. Without the patch, you were unable to delete or mark private messages read in the User Control Panel folder view.
  • Reset password issue fixed. It could have resulted in PHP fatal errors being thrown.
  • A bug was fixed that caused a failure when Emoji was used in private message subject line.

More minor issues fixed:

  • A bunch of missing configuration variables were added if they did not exist.
  • Conversions from phpBB 2 sometimes resulted in an invalid hash.
  • Bug fixed that would not allow a group avatar to be deleted in the User Control Panel.
  • Overflow error when attachments exceeded 2.1GB on SQLServer has been fixed. I found this as a bug years ago.
  • Google+ has been removed as a profile field, which makes sense as Google no longer has a Google+ service.

phpBB 3.3 is supposed to have a new feature to make updates easier. So far I don’t see how it is any easier and the process looks unchanged. As I do more updates for clients, I will see if I can figure out what is new and if so post some revised guidance.

July 2020 work summary

Felt a little slow around here in July. Could have used more work but I could have also used a couple contracts I’m on to move more quickly. I spend a lot of time waiting for clients to make decisions.

But my selective mass emails extension got approved this month, and the filter by country extension was resubmitted for another review. My Digests extension also got some rework to address issues in an April review but it’s not an official release yet as I’m waiting on language file changes. Strange that most of these issues really don’t change any of the behavior or add any features. It’s all to address perceived inadequacies in the code by the phpBB extension review team — really nitpicky stuff. No one will ever accuse the phpBB extension review team of not being thorough.

As for paid work last month:

  • I did more work for a client whose work I thought was done in June. Mostly it involved a lot of analysis and back and forth conversations. Emailing issues were reported so I provided guidance on where the real issue may lie (web host emailing quotas or filtering probable spam from going out.) I fixed two issues where the from email addresses was incorrect in some proprietary scripts written years ago by someone else. I went back and forth with the client about transitioning the domain’s static to WordPress using a custom plugin, or fixing the dated software instead, which is not responsive. More conversations are needed on what if anything they want to do next to modernize their website and their business process. The board was updated and moved to a new domain last month.
  • Upgraded a board from phpBB 3.2.8 to phpBB 3.3.0. I updated the style and updated the Google Analytics extension too. The correct logo image was uploaded. I made a minor tweak to stylesheet to render it correctly. I change spambot countermeasure from reCaptcha checkbox to reCaptcha invisible. Provided a sample SQL query to get a list of recent topics ordered by most recent post time.
  • This turned into a big job. I upgraded a board from phpBB 3.2.7 to phpBB 3.3.0. I installed a newer version of the Cleantalk, BBCore and Fancy Lazy Topics extensions. The latter two were used with the proprietary (paid) Flatboots style. There were lots of issue with HTTP 401 errors logging in after the upgrade. I eventually discovered I needed to add a form key to a Flatboots template that was missing. They had status images for forums (like the no new posts icon) in a weird place: /phpbb/avatars. I had to recover these files and move them to their proper places in the /images folder and correct the links in the database. There ensued lots of additional work, such as an HTTP 401 error going into ACP, which appeared to be due to being logged in to the same admin account from various browsers. Eventually we ditched the Flatboots style and BBCore extension, went with the Breezy style. I placed the existing logo inside it to customer’s satisfaction. This made the breadcrumb menu work correctly. I created a custom style inheriting from Breezy style for portability. But the 401 issue never quite went away and still seems to pop up from time to time. A workaround is to delete the board cookies. I’ve never seen this happen on any other site, so I figure the issue must be hosting related and not phpBB. My guess is that phpBB sessions aren’t getting deleted when they should, perhaps due to security software messing with permission in the /cache folder. It was all pretty frustrating, for both me and the client!
  • Some years back for a client I created some simple PHP software that listed a set of events kept in a database on a web page. The events folder containing software I wrote to record solar events somehow got deleted. The client was able to find an old copy of the files. I uploaded it and it began working again. The database fortunately was still up to date.
  • A client’s security certificate expired. I installed the Let’s Encrypt Plesk extension and installed a Let’s Encrypt certificate for the domain. In the past they paid for a certificate. With Let’s Encrypt, the certificate should renew automatically ever 30 days indefinitely. I provided analysis on SSL certificates options. They may not be comfortable with a free certificate and want a branded certificate instead. Later, I upgraded their board from phpBB 3.2.8 to 3.3.0, which included updating five styles (with changes needed to each) and 5 extensions. There were a few issues after deployment. A mailing list extension I used and modified had a newer version. I installed that but it caused issue, so I reverted to the old version of the extension with my changes.
  • Painful upgrade from phpBB 3.0.12 (showing as 3.2.0-dev) to 3.3.0. Running the database cleaner did not fix all issues in the database. Even moving the database to my machine and cleaning it there had issues. Eventually with enough tricks and fixing database issues that were encountered while running the database upgrade script, I was able to complete upgrade, which included populating the modules table from a reference, adding some missing configuration table values and adding some missing columns to the phpbb_profile_fields table. I disabled the contact form. I created a reCaptcha V2 invisible spambot countermeasure. Installed these extensions: Topic Index, Reimg Image Resizer (beta), Thanks for the posts, Recent topics, mChat and Search on Index. Search on Index was used because otherwise it would sit on top of a wide forum logo, which I had to center. Added a donate button but placed it on the navigation bar. I had to resize and crop it to make it look acceptable. Created a custom style and made changes there. There followed additional work and lots of questions. Answered questions about why there were three periods (…) in long links. Client wanted these removed but there’s no practical way to do this as it’s built into phpBB. With a bit of help on phpbb.com I put the recent topics above the mChat window on the index — I had to change the extension’s code to attach some code tied to an event to a different event. There was lots of concern about the placement and order of topics in the Recent Topics extension. After much back and forth I realized what he really want to do was bump topics so they would go to the top of recent topics shown. Apparently he had injected some code in his phpBB 3.0 board to do this. There is no extension to do this in phpBB 3.3 so he’ll probably have to live with it or pay someone to create an extension to do this.
  • Got some royalties paid for my book at last, but it was a pittance. I will need to sell thousands of copies to make a profit. Why not buy a copy now?
  • Upgraded a client to phpBB 3.3 who I had helped two years ago. A number of issues were reported. The basic problem turned out to be that the database had been upgraded, but someone put old phpBB 3.2 software back on the system. Uploaded the correct files. Updated their Absolution style but created a “custom” custom style with its changes to Absolution. Upgraded Digests, and User Details extensions. I had to edit services.xml file for Advanced Polls extension to get it to work on phpBB 3.3. Set spambot countermeasure to reCAPTCHA V2 invisible. There were quota issues uploading with FTP, so I had to use File Manager instead. I installed the Google Analytics extension rather than add code to overall_footer.html. Just today I checked a reported issue with digests not going out. There is some evidence that digests were mailed twice for some hours, I think because the board was down for a couple hours while I upgraded it. I’m hoping by resetting the digest mailer the problem will go away.
  • Finished a months long styling portion of project for a major customer. We’re now moving on to the other issues, principally how to replicate functionality they have on phpBB 3.0 using extensions. Met with the client and did a lot of analysis, but client was distracted with other issues so didn’t do too much work on this during July. This month I’ll be doing some experimenting with extensions to see if I can replicate the functionality they injected directly into the old phpBB 3.0 base code. They want to do initial moderation using Akismet. There is an Akismet extension for phpBB so I analyzed how that will work for them. Akismet will flag the spam, their moderators will review it and based on whether it is spam or not the Akismet database will get updated. This will save them a lot of work that was previously done through a lot of proprietary code.

SEO and phpBB

Board administrators typically want their board’s content to rank highly in search engines. It can help attract traffic and new members. That said, for the most part your users determine your board’s content, based on what they post. So it would seem kind of pointless to make your board search engine optimization (SEO) friendly. So is SEO a lost cause and waste of time on phpBB boards?

Not really. But remember that bulletin boards are structurally different than most web content, in that the contents changes frequently as users make posts. And you can’t do much to control what users post.

Moderators can remove offensive or off-topic posts. Moderators can also change topic titles, which might help in a topic’s ranking in a search engine. Most won’t because there are too many topics to deal with, the topic poster may feel offended and there is no guarantee that a moderator’s title topic will be more SEO-friendly than the poster’s topic title.

Also, phpBB does most of the deciding for you. The <title> tag for a page is usually a mash up of the board’s name and the topic name. This is not easily changed as it’s built into phpBB’s templating system.

Most phpBB boards fill niche areas. It’s hard to find a phpBB board that discusses general politics, for example, as it is done in so many other mediums. A board that discusses classic Mickey Mouse cartoons is more likely to be a board because it’s more granular. But because it’s more granular, it’s likely to get fewer views. Consequently, I see many more boards with 10,000 posts than 1,000,000 posts. In a way, this is good. This is where phpBB excels.

If you buy my book I go into a lot more detail on SEO and phpBB, so you might want to buy it. But here are a few points you may find useful:

  • Your board’s title and description are the most important factor you can control to influence search engines. The board’s title appears on almost all pages. So if SEO is important, you might want to work with a SEO expert to find an optimal title for your board. This often involves trying various board title’s over time to see which one has the most impact. You can set the title in the ACP: ACP > General > Board settings. The board title is more important than the board description, which can be left blank if it adds no value.
  • Analyze who is using your site and what they are reading. You can’t measure what you don’t track. So if you are not tracking your board’s traffic, you should, and you should be regularly reviewing the analytics for your board. There is a Google Analytics extension for phpBB that is easily installed. You first need to create a site in Google Analytics. Enter the tracking key on the board settings page after the extension is installed. Other analytics sites will require entering HTML or Javascript code into the overall_header.html and/or overall_footer.html templates for your style. Purge the cache after making these changes for them to take effect.
  • Actively moderate your board. Remove clearly irrelevant or off-topic posts if you have the energy. Search engines are trying to connect searchers with answers to specific questions, so the more concise a topic is in answering a question, the higher the page is likely to rank. Ideally you will empower your moderators to do this for you. Give forum users clear guidance on the forum’s moderation criteria in a sticky post. And make sure users know how to flag off-topic or spam posts for moderator review. The icon is easy to miss on the view topic page.
  • Using the SEO Sitemap extension doesn’t hurt. While it won’t make your board rank higher, it does provide a definitive list of your topics and posts for search engines, hopefully ensuring all your content gets indexed.
  • Encourage relevant pictures. Pictures make a topic and a post more engaging, providing the pictures are relevant. so all things being equal should make the topic rank higher than similar page. Encourage your posters to add a relevant attachment comment to each picture. This markup will be studied by search engines and helps identify the picture.

I also found this article online today that you may find useful.