From LifeType Wiki
Documentation useful for plugin developers and for anyone wishing to know more about the inner workings of LifeType.
Model-View-Controller in LifeType
Before diving into more interesting stuff, it is very important to become acquainted with the most basic principle in the architecture of LifeType: The Model-View-Controller pattern (MVC) This patter is not only used internally but it is also mandatory for plugins wishing to register new options in the admin interface or offer new pages via the public interface.
There is quite a lot to say about plugins in LifeType 1.0 since it is one of the most important parts of the platform and it is what allows to extend the features of LifeType almost endlessly. Everything has been moved to its own section: Plugin Development. In case you're planning to submit your plugins, please take a look at the Guidelines for submitting plugins.
Forms and data validation
There is one whole section dedicated to forms, data validation and how to work with them. Please take a look at it: Forms and data validation
The global configuration API
The global configuration API is a very simple and very easy to use API that allows LifeType code to save and retrieve information to and from the database (or a .php file if needed) It is used in many places throughout the code so it is important to get familiar with it: Global Configuration API
The global plugin configuration API
Since LifeType 1.2, configuration options offered by plugins can be controlled at a global level by an administrator, and even forbid users from altering these parameters. There is more detailed information in the document Plugin Development#The_Global Plugin Settings framework.
The menu API is in charge of generating the layout of the menus in the LifeType administration interface based on the contents of the menus.xml file. It also allows plugins to add new entries anywhere in the menu hierarchy so it is important for plugin developers to become familiar with it too: the Menu API
The permissions framework
Since LifeType 1.2 access control of actions is handled via permissions. There is a whole set of classes that controls permisisons and relationships between users and permissions, and it is described with more details in the permissions framework.
User interface guidelines
External plugins should share as much as possible from the default look-and-feel and therefore it is very important for us that they follow the same principles and ideas like the rest of the code: User Interface Guidelines.
Other useful stuff
- It is also possible to create your own stripped down version of LifeType by building your own index.php and filling in the appropriate bits and pieces to get everything running. Take a look at Integrating LifeType.
- LifeType provides a simple framework for developing unit tests. It is not only useful to developers of the core code but also to users wishing to customize LifeType, as it ensures that their changes do not break the expected funcionality of classes. Please see Unit Testing in LifeType.
Organization of the source code tree
Understand how LifeType's source code tree is organized and where goes what: Source Code Organization
LifeType has some Coding Guidelines so that code written by different persons can still be easily read. Please have a look in order to familiarize with it.
The Subversion repository
There is more information about the organization of the Subversion repository here: Subversion Repository
Instructions for how to keep your locally developed code synchronized with updates from the development team are here: Merging with Subversion
Please see a tentative Roadmap that describes where LifeType is heading to.