Back to Home

Explay 3

cms · social networks · blogs · php · engine

Explay 3

    Explay CMS 3Good day,% username%! Now I will tell you about my CMS. This time it is a CMS, which is not suitable for a corporate site, there is no store module for it and it does not know how to work with 1C.

    Explay CMS is a free social media management system. Basic features allow you to organize a full blog-social network or community.

    About the engine


    Development speed


    The third version of Explay CMS is designed primarily for developers. For a good life which, something like a framework was written - the core. Only in contrast to the usual framework, does the kernel establish a rigid framework for the structure and writing of business logic, and also takes on 90% of the routine work. In order to understand what kind of “routine” is involved, it must be said that the ORM principle is used in the system , that is, roughly speaking, everything is based on working with objects. The kernel takes on the responsibility of fetching objects from the database and cache, saving and creating new objects. Thus, the developer does not require knowledge of SQL or the basics of working with the caching engine (looking ahead, I’ll say that he doesn’t even need to know which template engine is used) and writing a module takes very little time.

    Custom fields


    At the heart of the third version of Explay is the idea - to enable site developers to create their own fields for articles, users and everything else. In this regard, three fundamental terms appeared: “object”, “type of object” and “field”. Each "object" is a representative of its "type", and each type is described by "fields" (later properties of the object itself). As you understand, to create a new property, for example, for the user, it is enough to create a new field, and then this property / field will immediately be available in the form of profile editing. Moving on, you can easily create new types of blog posts, such as podcasts or polls. This topic deserves a separate article, so I will not go into it now.

    The function of creating new fields is supposed to be introduced in the admin panels, but, unfortunately, it is not there yet, it will certainly appear in version 3.1.

    Formats


    I’ll probably omit the paragraph about OOP and MVC and go straight to the tasty one - formats. Formats is a conceptual idea, the essence of which is that the site can render the content of the same page in different formats (HTML, XML or even YML). This idea came to my mind when I decided how to arrange RSS: I was too lazy to add modules and create new templates, and I came to the conclusion that the rss feed needs to be automated somehow. Thanks to ORM, this was not a big deal; the engine already knew how to render the lists of objects returned by the module in the form of an XML table, so I just had to logically connect the format switching between HTML, XML and RSS. Now, in order to “train” the engine in a new format, it is enough to describe it in a certain class and add one line to index.php.

    All objects (articles, photos, users, etc.) can be obtained in XML format, adding in the address bar ".xml" - a ready-made API for your site :)

    Link modules and templates


    There is no connection between the modules and the templates (the template engine) - the methods of the modules return "response objects" that are passed to the template engine, and it already decides what to do with the result of the module. By the way, on the basis of these same “response objects”, content is generated for any other formats.

    Nevertheless, if the module does not know anything about templates, then the templates are the other way round - it is allowed to know the API of the modules. Thus, the ability of the templates to determine what data they need for the page is realized by themselves.

    By default, Explay CMS uses XSLT templates, but this does not mean that XSLT is the only option - you can use almost any other template engine, only for this you need to “train” the engine. I have plans to write a template engine in pure PHP.

    Articles and comments in one list


    Remember, in old versions of Habrahabr it was possible to view user comments and publications in one list? I decided to implement this principle in the core of Explay CMS: now a developer can easily mix all possible types of objects - articles, comments, links, photos and many others.

    “100 database queries per 100 comments”


    There was such a problem, but it was successfully resolved, I apologize if I frightened someone with a January post . Here I also want to note good performance when working with the cache on.

    Other features of abstracts:


    • The ability to fasten any caching engine (Memcached and eAccelerator are present in the base assembly)
    • Localization
    • Cron
    • Delayed mail sending
    • Automatically generated forms with validation
    • Jevix
    • Unified Settings Storage

    Opportunities


    In essence, Explay CMS repeats the functionality of Habrahabr, but there was no copying all the goals, only the basic principles of blogging are taken.

    I will give a description of the main modules:

    Blogs. The blog module implements almost the entire functional that a blog-social network should have:
    • Ability to publish and edit articles and links
    • Ability to delete posts
    • Drafts
    • The division of blogs into public (thematic) and personal
    • The ability to create blogs
    • Voting for blogs and publications
    • Blog Rating
    • Ability to appoint blog administrators and moderators
    • Commenting on posts
    • Tag Cloud
    • The division of publications into groups: popular, all, thematic and personal
    • RSS postings

    Users and People.
    • Registration with confirmation e-mail and without
    • Profile Settings
    • Ability to upload multiple avatars
    • password change
    • User rating
    • The ability to add to friends
    • User Search

    Photo Gallery
    • Create Albums
    • Upload multiple photos at a time
    • Photo editing
    • Rating photos
    • Commenting photos
    • Photo tag cloud
    • RSS photos

    Post office.
    • Notify users of new comments and incoming messages
    • Messaging between users (internal mail)

    Tape. The feed is a completely new module, an analogue of Vkontakte news, where the user can see the feed (log) of the actions of his friends. The following actions are logged: new publications, connecting to blogs, adding friends and photos.

    Comments Unified comment system on Ajax, the ability to delete comments.

    Update system


    In my opinion, each CMS should have an update system. And its presence provides not only a convenient mechanism for updating the code and an item for the marketer, but it is also very important in case of security updates. In the third version of Explay CMS, to update the system, it is enough to download the ZIP archive in the mini-admin panel. Since updates are collected automatically, I think there will be no shortage of them.

    By the way, all the “assemblies” of Explay CMS now compile a special script, so if you come across a file whose value is difficult to determine, then this is the work of the “compiler” :)

    System requirements


    - Apache
    - PHP 5.2
    - MySQL 5.0
    - XSLT
    - Multibyte String
    - GD 2
    - Zlib
    - Mod Rewrite

    Download


    The official download page , as well as SVN on Google Code.

    Thanks for attention! Waiting for criticism.

    PS: Unfortunately, I do not have a server on which to run CMS, and there are no volunteer demo sites left. If anyone has the opportunity to make a demo site, I will be grateful.

    UPD: explay.gengine-dev.net

    Read Next