Hello everyone!
Right now further development is at a halt until we can work out the details regarding AllianceCMS's main flow of execution.
After a lot of research and a lot of testing I feel that we should adopt the HttpKernel Symfony Component, which relies on the EventDispatcher Symfony Component. This powerful combination will allow us to define a concrete flow of execution while at the same time allowing us to leverage the power of an Event system.
If you are not familiar with Event systems, also known as Hook systems, I think you're going to love this. This allows us to create an Event, and then 3rd party module developers can create Event Listeners that will be triggered/executed when the Event is dispatched.
An example:
Let's say I want to give other modules the chance to react before a comment to a blog post is inserted into the database. What I do is create a 'pre_insert_comment' Event, and then I dispatch this Event right before the comment is inserted into the database. Well, luck has it that the Spam module has an Event Listener that is listening to the 'pre_insert_comment' Event. The Spam Event Listener hears the 'pre_insert_comment' Event was dispatched and can now analyze the content of the comment. If the contents of the comment fails to pass muster the comment is redirected to a quarantine table, a message is logged, and an email is sent to an admin or moderator. Once the Event Listener is done with it's job the flow of execution continues as usual.
I've spent some time to document this issue, please take a look:
HttpKernel Implementation DetailsI have also created a Google Doc that states some goals and documents AllianceCMS's current flow of execution:
Flow of Execution gDocWhat we need to do is brainstorm and merge the two, while altering anything that we need to due to the differences in how HttpKernel works and what it offers.
We also need to brainstorm and define a list of events that we think will be helpful for core developers, modules developers and theme developers (not sure they would need any, but that's what brainstorming is all about).
As I know this system intimately I encourage everyone to hammer me with questions as much as possible. I am available for one-on-one or group sessions on Skype, Google Hangouts on Air and Mikogo (or any other means that is free). I think I can mainstream everyone's understanding of the problem and what we are trying to accomplish, even though I do believe I've included enough links to pertinent documentation.
ALRIGHT, IT'S TIME TO GO GIFD!!!