C4OA (as they are popularly called) were told by their hosting company (Hostgator) that their site would soon be shut down due to the outdated Joomla and extension versions, which were considered a high security risk for their servers, and they would no longer support PHP 5.2 on which Joomla 1.0.x is supported on the Hostgator servers.
So C4OA were in a bit of panic. No more website, and their Club would have to shut down as well since the site was the lifeline of the club. We could clearly understand that they were extremely worried, and for good reasons!
They told us that the forum on their website was so vulnerable that in 2012 they had been forced to shut it down, due to the (known issue with good-old Fireboard) - mountains of spam and junk being submitted.
"You are our last hope of saving our site!"
We acknowledged the Task ahead of us and advised the potential Client that the first step we would need to take would be a full inventory of the site via an audit of the Joomla core and the extensions installed, so we could discover possible challenges ahead (we know by our extensive experience with Joomla 1.0 migrations and these kind of EoL and/or outdated extensions that we would face challenges at certain stages of the process).
We will describe all the steps we took to realize this challenge in the following paragraphs.
Audit of the current Joomla 1.0 site
4COA provided access to the site and the GWS-Analysts reviewed the installation and available data. The review gave us the following information
- Joomla 1.0.15 installed (22 June 2008)
- Fireboard 1.0.3 installed
- SH404 SEF v.139 installed
- Tailored template specifically made for the Club
- 2,400 users/members
- 260 Joomla articles in com_content
- 980 internal links (article to article)
- Over 190 tables in articles
- 3,400 SH404-links (of which 1,870 were ‘404’ dead links)
- 600 Fireboard topics with some 4,000 replies including many images
- PHP build on a Hostgator Linux server (Cloudlinux)
- Database MySQL 5.5.51 (38.2)
- PHP version 5.2.17
- Webserver Apache
- PHP Interface cgi-fcgi
- Wrong Server settings for ‘Magic Quotes’ and ‘Register Globals’ among some other doubtful settings
So we were looking at a very old, hardly updated Joomla site with some pretty old extensions and (what turned out after further analysis and discussions) repeatedly hacked (and restored) site.
Nothing shocking, we would say this is a classical example of a maintenance-neglected site, owned and handled by very good and willing people who had no idea how to properly maintain a Joomla website, and who had (regretfully) had their wallet drained by previous developers who took no care for the site (no updates of Joomla and/or extensions had been done, despite them charging for ‘maintenance’).
So yes: A Challenge Ahead!
Thanks to this audit we were pretty sure what the project would bring to the client and to us and we proposed a (major) migration of this website to Joomla 3.8.6 without losing any data:
Project Definition & Quotation
Based on the Audit as described above we submitted a project definition which considered the (limited) budget of an almost (starved-of-funds) club
- Migrate Joomla 1.0.15 Content, Menu’s and Users to Joomla 3.8.6 (anything else is not possible to migrate see our Practical Guide to migrate Joomla 1.0 to Joomla 3.8, which is also available as our contribution to the Joomla Documentation portal!)
- Migrate the Fireboard 1.0 forum extension to the versatile Kunena V5 forum-extension, without losing any data or images
- Re-create the template of the Club (client wanted to keep the “look-and feel) on the Gantry-5 framework
- Remove SH404 and replace with the default Joomla 3.8.x - new router SEO/SEF
- Recreate all internal links (needed due to the Joomla 3.8-nested category systematic)
- Re-create and/or modify all Navigation where possible keeping menu-id’s etc to maintain SEO ranking
The Client accepted our proposal, and were very glad that they had found a company that would help them to save their Club website and protect revenues generated from the club for their business entity!
So after all administrative stuff and payments were cleared we commissioned the project on our Project Collaboration Support System and around the end of February 2018 we started this Challenge.
In our Internal Project Brief, we had defined a 3-phase segmented development/migration (main segments):
- Joomla Migration from Joomla 1.0 to Joomal 3.8 (users, content, navigation)
- Fireboard 1.0 to Kunena V5-Migration
- Re-creation of the template with Gantry
We did not care that Joomla 1.0 cannot be copied to our servers (EasyApache4 of cPanel does not support PHP 5.2 and 5.3) since we planned to pull the data from the existing site with a migrator script and copy images etc directly from the file system with SSH.
We also did not care whether Joomla 1.5 would be actually running in the frontend with/without Fireboard, since we only needed access to the Joomla 1.5-database (see Step 3 below) where the data is located.
Joomla 1.0 migration to Joomla 3.8
This was actually the easiest part of the project. We have done this often and are still doing these kinds of migrations regularly (there are still a lot of Joomla 1.0 sites running!). The kinky part of these steps is a successful creation (and upload into J1.5) of the database backup of the Joomla 1.0-website (which needs to be on the latest Joomla 1.0.15 in that branch) with the Migrator script. This script works well (despite the Joomla docs stating it is not working) if you know the little bugs in it and how to avoid the traps. The migrator script is downloadable from our website.
I do not wish to repeat all steps but basically they are all very well documented by us in the Joomla documentation portal (Joomla 1.0 to Joomla 3.x) as well on our site and the Joomla Forums in the Practical Guide I wrote for the Joomla Community. I suggest you just review the posts and follow the steps. What this describes are the steps to be taken to go (very rapidly and basically easy!) from
Joomla 1.0.15 –> Joomla 1.5.26 –> Joomla 3.8.6
Without losing any content or users and maintaining the most important navigation of your site.
One important remark here regarding the installation of the Joomla 1.0 database in the Joomla 1.5 site if you are planning a Joomla 1.0 to Joola 3.x migration: --> If the migrator script won’t install during installation of Joomla 1.5 as outlined in the docs, upload the Joomla 1.0 database migration-file into the “installation/sql/migration” folder and rename the file "migrate.sql" (do not forget this!) of your Joomla1.5 directory structure before installation. This will do the trick!
After we committed all the steps as outlined in our Practical Guide(s) we could truly say that the first major part was succesful so
C4OA: Welcome to Joomla 3.8.6!
Recreation Template with Gantry-5
The Gantry-5 framework is a very versatile template framework developed by Rockettheme, one of the largest and oldest template and extension developers of Joomla. It is very powerful and when you understand the platform allows for endless customizations without actual coding knowledge. Our company has a preference for either the Gantry Framework or the Yootheme Pro Framework (which we use on our own websites) Both are wonderful platforms and powerful but based on some minor differences and needs for this particular project we decided to go with Gantry.
The template was rapidly re-created and enhanced (Google-fonts/font-sizes and layout improvements) based on the existing website, and the CSS was redeveloped (2 templates: one frontpage and one inner-template). The template(s) run well in Joomla 3.8.6 with PHP 7.1 and PHP 7.2 on a MySQl/MariaDb environment, and are fully responsive.
Note: Based on internal considerations the client chose not to modify (and make responsive) the +190 tables in the articles (tables in Gantry need to have a specific class assigned to be responsive and we would have been forced to re-visit each table to add the classes to the tables in each article)
The Challenge: Migrate Fireboard 1.0.3 to Kunena V5
This is a migration and upgrade which we performed partly manually and partly automated with the very versatile SPupgrade tool by Kaitonomoto. We have previously used this tool to migrate Joomla 1.5 quickly to Joomla 3.8. I can only advise people to invest the few Euro’s since it saves days of work, avoids errors, and keeps menu link id’s intact, which helps Search Engine rankings such as Google and Bing.
If you do not wish to pay for that extension you can follow the steps at the Joomla Documentation Portal to first update Joomla, then head off to the Kunena forums to follow the steps as described by user “PIntobuck”. This will work as well but do not forget to move from Joomla 1.0 the folders “ ../media/kunena/avatars” and “../media/kunena/attachments” (images folders) to Kunena (The folder structure is the same for Kunena on J 1.5 and J3.8).
5.1 : Update Fireboard
We started with upgrading the oldireboard forum to latest version for Joomla 1.0 and we needed to get Fireboard 1.0.5RC2 (released 22-10-2008). We found it and upgraded it. (You can download this from the GWS-Desk.com website.)
5.2: Install Joomla 1.5
We downloaded Joomla 1.5. from the Joomla Download Portal and installed (see ‘Joomla 1.5 installation guide” by Andy Wallace). Security warning for users who perform this installation: Do not use the default prefix “jos_” This is a high risk security threat so change that to a different prefix such as ‘gwsd9_’ or whatever prefix you want to use (we will use this example prefix later in the challenge).
After we installed Joomla 1.5 we logged into the administrator section of the Joomla 1.5 site and enabled the “legacy plugin” We need to enable this plugin which brings Joomla 1.5 in a Joomla 1.0 ‘legacy state’ allowing certain extensions and templates that only work in J1.0 to run under the Joomla 1.5 engine). (Fireboard 1.0.5RC2 does not run nor can it be installed on native Joomla 1.5!)
5.3: Export the Fireboard 1.0 database
We exported the FB tables from the Joomla 1.0 database. (We are going to assume that you are not an experienced phpMyAdmin user so we listed the non-experienced way of doing this) We selected the Joomla 1.0 database in phpMyAdmin and hit the “Export” tab in the top menu. This opened the export function of the database. After selecting “export method=custom” and “Function to use when dumping data=INSERT” were selected we hit “GO”. This saved the tables to the local PC. As simple as that!
5.4 Install Fireboard on Joomla 1.5
We now proceeded with installing the downloaded Fireboard 1.5 RC2 extension. As soon as we completed the installation of this extension through the Joomla extension installer we needed to remove the database tables of FB from the database (Since we were going to replace them later on with the FB-1.0 tables) We opened phpMyAdmin, selected our Joomla database and checked all tables of Fireboard (the have ‘fb’ in their name) and selected from “with selected” --> “DROP” and hit the “Go” button. This meant we no longer had FB-1.5 extension tables in the database, but we were going to correct that in the next Step!
5.5 Prepare for the Kunena Migration
We downloaded in 5.3 the Joomla 1.0 FB-database. First, we needed to change the database prefix from the exported Joomla 1.0 database. Experienced users can do this in phpMyAdmin but here we will explain how we used a text-editor (in this case Notepad +/+) to change all prefixes in our entire database.
We opened the extracted database file with the FB-tables in Notepad +/+ and in the menu selected “search-->replace” and entered the prefix of the Joomla 1.0 table (if you do this you will find most likely the prefix ‘jos_’) into the “find what block” and the prefix of the Joomla 1.5 database in the “replace with” pane (in our example ‘gwsd9_’ ) and hit “replace all” . We saved this text-file on our computer and now proceeded with importing the Joomla 1.0 FB-table with the changed prefix in our Joomla-installation by going to phpMyAdmin and selecting our Joomla 1.5 database, clicking the “import tab” and selected on our computer the Text file with the changed database tables of Fireboard and hit the ‘go’-button. A success message showed that the FB-tables have been imported successfully and now Fireboard 1.5 RC2 was working on Joomla 1.5 with all the old Fireboard 1.0x data. One little step we had to do as well and that was to move the Fireboard image-folders from the old Joomla 1.0 website to the Joomla 1.5 Fireboard loaded website. This is easy…We downloaded the folders “ ../ images/fbfiles/avatars” and “../images/fbfiles/attachments” (images folders) from our Joomla 1.0 installation and uploaded to our Joomla 1.5 images folder. The folder structure is the same.
We also installed SPugrade on the Joomla 1.5 site since that was going to perform the migration for us flashy fast!
Now we were all setup and ready for Kunena!
5.6. Installation Kunena on Joomla 1.5
We downloaded Kunena 2.0.4 (which runs on Joomla 1.5) from the Joomlacode repository and installed it through the extension installer. Kunena 2.0 automatically imported content from the Fireboard mysql tables and we had now Kunena 2.0 working on Joomla 1.5 with all the old Fireboard 1.0x content saved!
5.7 Install Kunena V5 on Joomla 3.8.6
We prepared to migrate Kunena by installing the latest Kunena V5 on the Joomla 3.8.6 website.
Now we were ready to move straight up, fully automated from Kunene 2.0 on Joomla 1.5 to Kunena 5.0.x on Joomla 3.8.6!
We opened the SP Upgrade component in the Joomla 1.5 administrator site and selected under the extension option “Kunena” and when we hit the “transfer” button miracles did happen and within seconds we had a former Fireboard 1.0-forum working on a Kunena V5 on Joomla 3.8.6!
If you follow the manual steps as described by the Kunena-user mentioned above please make sure that you do not forget to copy the images folders (../media/kunena/avatars and ../media/kunena/attachments) from Kunena 2.0 (J15) to the Joomla 3.8-installation. Also check on point 3.i from his post That is an essential step in the manual migration!
The Final Scope: Navigation
As mentioned, the navigation needed special attention since the Joomla section/categories method was changed between Joomla 1.0 and Joomla 3.8 to “nested categories". This of course had influence on links that used categories or section id’s in the link, so we recreated these links and addressed all the hundreds of internal links and rebuilt those.
Also the menu links to Kunena needed to be rebuilt due to the methods chosen by Kunena to build menu-alias as link (see Kunena menu tips).
Reinstall the site at Webhost
Hostgator offered the Cloudlinux option which allows for multiple PHP versions, so we changed the root directeory to run with PHP7.1 and moved the old J1.0 website to a subdomain running PHP 5.2 (reference site). We backed up on our development server and moved the new Joomla 3.8.6 migrated site with Akeebabackup-Pro and restored it in the root of the domain. This process took 10 minutes in total with a minimum downtime of 3 minutes, enabled SSL which was installed in the mean time (you will find cheap Comodo SSL-certificates for example at Namecheap), made a full site backup on the new location.