26
Developer's Corner / Re: Anyone interested in some serious look at internals of CMS systems?
« on: February 19, 2013, 09:35 PM »I guess the kind of thing i was interested in is more internal structural decisions like:
- How is the plugin/extension system designed?
- How is the installation system designed?
- How are users, and more importantly GROUPS of users represented in the database?
- How is the permission system handled?
- How is upgrading handled?
- How are hooks and events handled?
- How is translation handled?
- How is logging handled?
- How is security handled and what kinds of options exist for monitoring and dealing with problems?
- What kind of support for versioning exists?
- What kind of choices were made about what to build into core vs. what to write as extensions?
-mouser (February 18, 2013, 10:41 PM)
WOW! Each of those could almost be a Thread Topic of their own.
I've been pretty impressed with some of the designs I've seen in the past. I like the model where you include skeleton hook files at various stages of the page build. That seems to let you handle upgrades, plug-ins, versions and translations. It also tends to scatter your logic across dozens of files, so you really have to know where your going to make changes. Something like this:
Code: Text [Select]
- ....
- include(main_menu.php.inc);
- include(post_main_menu_hooks.php.inc);
- ....
where post_main_menu_hooks.php.inc would contain something like:
Code: Text [Select]
- [std include validation and setup]
- // Add your post main menu hook includes here:
- include(sample_menu_hook.php.inc); // contains nothing -- just a sample
You can do the same for language, etc.
Group, permissions and users have been badly handled from most of the examples I've seen. A module that can integrate with anything would be the best.
I have some ideas on users and groups but I don't like them because they're extremely tedious. It would basically require non-public information to be listed by element (Table or Field) with Group Membership requirements to View or Edit. (You could add RO and RW fields)
I always get intimidated by the scope of the project when I think about it too much.