Architecture DIAFAN.CMS

All requests to enter the system in the first place on the file index.php. The file has the following functions:

  1. the connection of all the "vital" file;
  2. check the availability of the installation folder – if yes, then redirect to the installation system;
  3. check request for access to an administrative folder – if yes, then redirect to the administrative section;
  4. identifying ways the site (the address is analyzed, after which http://site.com/);
  5. the initiation of the main object system.

The main system object – an instance of the class Init, described in the file includes/init.php.

When initiating a main object of the system takes place:

  1. Start session;
  2. User definition;
  3. Defining the requested language version of the site;
  4. Definition of the requested page of the site;
  5. Module connection;
  6. Connection template design of the site (by default the file themes/site.php).

An instance class Init transmitted to all other facilities and is accessible from any location of system in the form of variable $this->diafan.

Таким образом, в любом месте системы можно получить глобальные данные:

  1. общие данные;
  2. общие функции;
  3. объекты классов-подключений.

Теперь подробнее об этих данных:

Общие данные

  • $this->diafan->installed_modules – массив данных с именами модулей, которые подключены к фронтенду сайта (в таблице {modules} сделала запись о модуле name=модуль, site='1');

    Example:

    if(in_array('cart', $this->diafan->installed_modules))
    {
        
    // модуль «Корзина товаров» установлен и можно к нему обращаться
    }
  • $this->diafan->rewrite_variable_names – список всех переменных, доступных для использования в URL;
  • $this->diafan->current_module – модуль текущего исполняемого файла;
  • $this->diafan->current_insert_tag – текущий шаблонный тег.

Общие функции

Класс Init наследует абстрактный класс Core (includes/core.php). Все функции этого класса можно вызвать в контроллере и модели модуля в виде:

$this->diafan->название_функции();

Example:

// редирект на главную страницу
$this->diafan->redirect('/');

// получение сообщения для пользователя, заданного в настройках модуля «Обратная связь»
$message = $this->diafan->configmodules('add_message', 'feedback');

Объекты классов-подключений

В основном объекте инициируются классы:

  • кеширование (класс Cache, файл includes/cache.php, вызывается $this->diafan->_cache) – вся работа с кэшем;
  • маршрутизатор (класс Route, файл includes/route.php, вызывается $this->diafan->_route) – доступ к переменным, передаваемым в URL, а также генерирование, сохранение, получение ЧПУ;
  • шаблоны модулей (класс Template, файл includes/template.php, вызывается $this->diafan->_tpl) – подключение шаблонов модулей, обработка текста из визаульного редактора;
  • парсер шаблонных функций (класс Parser_theme, файл includes/parser_theme.php, вызывается $this->diafan->_parser_theme) – подключает шаблонные теги, прописанные в виде тегов в шаблонах сайта и непосредственно в тексте визуального редактора.

Кроме того, через основной объект можно обратиться к любому модулю-подключению. Если в модуле есть файл modules/модуль/модуль.inc.php, где описан класс Модуль_inc, то при первом обращении к переменной $this->diafan->_модуль, создаётся экземпляр класса.

Выделим отдельно подключения модулей, относящихся к ядру системы:

  • cтраницы сайта – используется для получения данных о текущей странице и переопределение их в модуле.

    Example:

    • $this->diafan->_site->id – номер текущей страницы;
    • $this->diafan->_site->module – модуль, прикрепленный к текущей странице;
    • $this->diafan->_site->text – контент текущей страницы.
  • пользователи сайта – используется для получения сведений о текущем пользователе.

    Example:

    • $this->diafan->_users->id – id-номер текущего пользователя;
    • $this->diafan->_users->name – логин текущего пользователя;
    • $this->diafan->_users->fio – ФИО текущего пользователя.
  • языки сайта – используется для получения сведений о языках сайта, главной языке административной и пользовательской частей сайта и получение перевода интерфейса.

    Example:

    • $this->diafan->_languages->all – массив данных обо всех языках, использующихся на сайте;
    • $this->diafan->_languages->site – номер языка, использующегося как основной на сайте;
    • $this->diafan->_languages->admin – language number, which is used as the basic admin part.