A Joomla based website needed an update from 1.5 version to its latest version or any other CMS assuring secure infrastructure. Client already tried upgrading it via an Indian IT company but it was a screwed execution. At that time, Joomla itself does not provide any feature/facility through which Joomla users can upgrade Joomla versions. Client wanted vteams to create a flow through which this system update goal could be achieved. We could not upgrade Joomla to its latest version because it has structural changes from its old version to new version. That is why our team suggested Client to use another popular and OpenSource CMS which is WordPress because it has simple/flexible database structure and rich functionality. We had to remain intact with Client’s wish-list:
- Keep all the contents and user-base intact while upgrading to new version of Joomla
- No issues should encounter by the paid customers and forum structure (its layout) should remain same
- Remove unwanted functionalities and focus must be on forum
Below mentioned were the major problems that vteams had to resolve:
- Client’s website current Joomla version is 1.5, latest available version was 3.3 (Totally re-structured version and it was not compatible for the upgrade)
- There was custom coded stuff that was deviating from Joomla standards (It made the upgrade difficult)
Our team decided to plan the development execution on the basis of following two points:
- Migrate from Joomla to some other OpenSource platform (We chose WordPress) with previous dates, users data and existing security infrastructure
- Plan future development on the new infrastructure
1- Access The Admin Of Joomla Website:
After downloading Joomla Live website, we needed to access its admin panel. But the problem was that admin panel was inaccessible due to some query string protection with admin URL for security purpose, so we had to explore the Joomla structure to access its Joomla admin.
We found that its code was implementing this protection. We explored and disabled this protection to run the admin panel and to see the back-end implementations of the website.
2- Selection Of WP Plugin For Database Migration:
We needed to migrate Joomla website content to WordPress based on ‘Articles & Section’. After doing some R&D, we found a plugin ‘FC Joomla’. We had to customize FC Joomla for completing the migration of ‘Articles and Section’ to ‘Categories’, ‘Posts’ and ‘Pages’.
3- Fixed Issues In Content:
After the migration of contents, we found problems in it such as invalid hyperlinks, hyperlinks according to the Joomla structures, content encoding issues, invalid image paths etc.
For this, we had to use PHP simple HTML DOM to figure out/trace invalid inner content in posts and fixed these issues programmatically by updating the hyperlinks according to WordPress structures. We then updated the content encoding format, transferred the images to WordPress website and updated the links according to the new image paths.
4- SMF Forum Extraction From Joomla Website:
In Joomla website, SMF forum was integrated with Joomla plugin (JFusion & AEC Module) which was working properly with its RBAC system. We extracted the SMF database from Joomla and integrated that database with its compatible version of SMF Forum in WordPress.
5- Upgrade Of SMF Forum:
New version of WordPress was not providing the compatibility with the existing version of SMF Forum. We then had to explore SMF Upgrade tool for the upgrade of SMF Forum from 1.0 version to 2.0.8 version. SMF Forum was updated to its latest version by using that tool.
6- Integration Of SMF Forum With WordPress:
To integrate WordPress with SMF Forum, we used the SMF2WP plugin. At that time, only this plugin was providing the integration and access from SMF Forum to WP members. It was not providing features of RBAC, so we had to customize this plugin of membership to integrate RBAC at both ends.
7- Themes Integration On WordPress & SMF:
For theme integration on WordPress, we extracted the code from Joomla active theme and implemented that theme in WordPress. We also updated Joomla commands with relevant WordPress methods/functions.
In case of SMF forum, we implemented the same theme which was used earlier in SMF. We also updated the attributes in theme according to the new version requirements.
8- Management Of Recurring Payment System:
In Joomla website, the plugin (AEC Module) was providing full featured recurring payment system for membership. We then used free version of WP Member Plugin for WordPress. A customized plugin “abc registration payment” was created from scratch for the management of members recurring payments. It was then integrated with the existing payment records of Client’s website.
9 – Data Encoding Issues In WordPress Website:
After the migration of Joomla and SMF upgradation, the content with special characters, smileys and ASCII was not working. The Joomla and SMF site data was encoded with ISO Latin which was not compatible with new WordPress and upgraded SMF forum. For this, we made some data format changes at databases end. We also upgraded the data format through custom scripts.
10- Management Of Joomla Articles, Sections & Joomla Categories In WP Categories, Pages and Posts:
We were using the FC Joomla for migration and FC Joomla was migrating the whole content to WordPress Posts. To map the contents properly, we made some changes in FC Joomla plugin to map Joomla Categories to WordPress Categories, Articles to WordPress Posts, relation of WordPress Posts with migrated WordPress Categories and Sections to Pages.
11- Management Of WordPress Posts Access Through Custom WP Members Plugin:
To implement the proper RBAC based on membership payment, we created custom scripts and implemented the role based access configuration in posts panel. After that, we integrated that module with WordPress members and “ABC registration payment” plugin.
12- Joomla Passwords Integration Between WordPress & SMF Bridge:
After migration, the user had Joomla encoded password which was not possible to convert to the format through which WordPress authenticates the user, so we kept Joomla passwords in Client’s website. We implemented a hook in authentication process. This hook encodes the password during the user authentication and match it with the database of Joomla Passwords. If the user authenticates through Joomla password, then system converts the same password to WordPress format password and login the user to registered user panel. Next time whenever a user tries to login, system will authenticate the user according to WordPress encoding techniques.
How We Rescued/What We Achieved?
We did active follow ups and sent progress reports to Client because of data volume (SMF Forum Data specially) and old versions. It was a challenging job for us but however we achieved the following by our team efforts:
- Migration from Joomla to WordPress
- Imported Data to new WordPress
- Upgraded Forum to its latest version
- Migrated users (from Joomla to WordPress) with same passwords
- Migrated payments options
- Forum integration with WordPress
- Theme development