It’s been over a week since my last update and I wanted to give the community an update. The past week has brought on a lot of discussion and interesting changes to the implementation of my Google Summer of Code multi-site project. If you haven’t heard of it or want to read the full project’s details you can do so here.
Thanks to the Joomla community for all the feedback on my last blog post, it has opened up a lot of discussion and ultimately a change in the implementation of the project for the better. After a few discussions with Marius (my mentor), we decided the MySQL views approach would be more scalable and require less modifications to the Joomla core. The previous approach (menu based) would require components to add code for non shared sites. The idea for using MySQL views is very similar to my original project proposal. The disadvantage to this approach is that MySQL5 is required for views. The details are outlined below.
How it will work:
* A super administrator can create a new site in the multisite component and specify what URL and table prefix is associated with by a siteid
Which will trigger the following:
- During the creation of the multisite the super administrator will have options on which tables are to be shared if any (users, sessions, content, components etc..)
- The new site install will trigger a mysql query that will create the database structure using the table prefix defined. If tables are being shared this new table will point to that of the shared site.
- A configuration file similar to the main site will be assigned to a specific siteid, allowing super administrators to change options to their site
* Super administrators will be able to go to a section of the multisite component to choose if they would like to share specific components between the sites and keep others separate
* On the frontend JRoute will handle URL detection and use the appropriate configuration file to load the proper site.
Outline of planned approach:
Step 1: Build component that can be used by super administrators to create/edit multi-sites
Step 2: Create installer to deploy separate multi-sites
Step 3: Create installer to deploy shared multi-sites
Step 4: Create configuration loading scheme for sites
Step 5: Add modifications to the core installer for multi-site
I have completed the administrator component and I am currently working on the installer for non shared sites. I have gone ahead and updated the original project page with the new approach.
Please keep checking back for more updates, and as always I love to hear feedback!