Open LoneShooter opened 11 years ago
Currently I don't have concrete plan. Do you have any suggestion?
Well, I have been thinking about it intensively. Together about multilingual support. And the more I'm thinking and researching solutions in other CMSs the more I'm sure that the solution for both problems could be more or less the same. This post is not short but please read it carefully.
Let's look the following revisioning solutions existing in some CMSs:
a) Drupal 8 (developed with Drupal and Symfony 2 framework), ExpressionEngine (developed with CodeIgniter framework) and Magento (developed with Zend Framework 1)
These CMSs have the ability to create custom data types not directly via SQL but rather through admin panel. In Drupal 8 each data type is not created as a separate table (e.g. PageTable) but they are actually represented as nodes (in table "nodes") and their fields are in table "node_fields" with revisions in table "node_fields_revision". All translations are in "node_fields" distinguished with the field "langcode". Here is the E/R diagram published a couple of weeks ago: https://drupal.org/files/Drupal8_UPsitesWeb_Schema_10-19-2013.png
Pi Engine is currently very different compared to this architecture because each data type has its own table(s) with fields inside them.
The reason why I'm mentioning it here is because it's relatively close to PHPCR (PHP Content Repository) standard that defines hierarchical semi-structured data In a consistent way allowing them to have native support for versioning and multilingual (http://phpcr.github.io/slides.html)
b) SilverStripe CMS (developed with SilverStripe framework, former Sapphire framework)
Its DB architecture is very similar to Pi Engine (including widgets or blocks) and it has native support for content versioning. Each datatype table has accompanied revision table for storing changes (e.g. "Page" table and "Page_revisions" table)
To assume, basically we have got two possible solutions:
But for both of them we'll need to care the following:
Please consider that I've been developing sites using all CMSs mentioned above and information I've provided here is not just "philosophical" thinking, but a wish to have fully featured Pi Engine as a product we'll all be able to use for both our own sites and sites we're developing for clients.
The above analysis is extremely helpful, I will definitely think about it thoroughly. Really appreciated.
BTW, it would be great if you could have more analysis on drupal8 in any aspects to see if we can learn. @LoneShooter
@taiwen, I have to be involved in the analysis no matter whether I want to, it's clients' wish :)
Here is the article with new features and changes in Drupal 8: http://www.cmsobserver.com/whats-new-in-drupal-8/
Drupal 8 also use Twig template engine, but I don't like using these engines at all. However, it claims that can be compiled to the PHP level and stay in memory which could improve performances. I still prefer ZF logic.
For now, I would like to stick to more general system (like Pi Engine). No matter what system is used here are general users' requirements for almost ALL projects I've worked on:
Of course, the Pi Engine has many other advanced features and its main strength is in ability to create custom applications using Zend Framework 2 and not learning all these different custom stacks and frameworks that fit only to those particular CMSs. I'm not sure why only few people have paid attention to the Pi Engine so far.
needed in the future
Just to ask, is some kind of content versioning planned as the core Pi-Engine feature?