From Habari Project
(Culled from the existing main page. Should be an introduction to the project for new users, a first stop for any user looking for documentation, and have pointers to pages about how to extend Habari with plugins and themes.)
Welcome to the community documentation for Habari, created by users and developers to get started.
Overview of the project. Visit the Habari web site for screencasts, blog.
- Installing - Read this first, it lists the requirements and verifications to do before installing Habari.
- Upgrading - Intended for people using developer releases, these are important notes about upgrading to the latest developer release.
- Importing Content - How to import your content from other blogging software.
- Security - Concerned about how secure your site is? Take a look at this page on how to tighten everything up.
- FAQ - Check this out first for the most commonly asked questions.
- Mailing list
- Habari Forums - Ask general questions - for example installation and customizing.
- IRC - We have our own IRC channel on Freenode at #habari to ask questions or just have a chat.
Customizing and Extending Habari
Other stuff that might go somewhere
How Habari works
Habari uses the front controller pattern to implement a model-view-controller architecture. Server rewrites, such as Apache's mod_rewrite, route all requests through Habari's Controller, via index.php, where the requested URL is mapped against a set of rules and sent to the appropriate handler, along with any data submitted. The handlers, such as UserThemeHandler, AdminHandler, and AtomHandler, respond according to the request and data, accessing model classes such as Posts and Tags. Control is then passed on to the appropriate theme for output. See Habari Workflow for more detail of how individual requests are processed.
Throughout this workflow, there are hooks that allow plugins and themes to extend Habari. More details on how to extend Habari can be found on the [dev|developer hub page].
The model classes access the actual data using PHP Data Objects (PDO). This has a number of advantages, such as automatically quoting arguments in prepared statements to guard against SQL injection attacks, and database independence, allowing Habari to run on different databases, such as MySQL, SQLite, and PostgreSQL.
Theme engines, which are responsible for the view, are also interchangeable. The simplest engine is the RawPHPEngine, which simply executes templates as PHP.
Habari is completely object oriented, taking full advantage of PHP's OO features. There's no need to require classes in all the scripts, as that's handled seamlessly using __autoload(). Metadata is read and written invisibly using __get() and __set().