Описание

Класс для работы с модулями системы

Данный класс производит все операции инициализации модулей системы. Инициализация модулей происходит только один раз при входе пользователя в систему. Затем класс восстанавливается из сессиии. Ссылка на класс сохраняется в переменной сессии $_SESSION['sbPlugins']. Класс хранится в сессии, чтобы избежать переинициализации модулей при каждом обращении к событиям системы.

Модуль системы представляет собой набор файлов. В системе есть четкие правила, где должны располагаться эти файлы и как называться. Основные файлы модуля, отвечающие за регистрацию модуля в системе и реализацию всех событий, предоставляемых модулем, должны располагаться в поддиректории директории /cms/plugins/. Имя этой поддиректории должно совпадать с уникальным идентификатором модуля, как он указан в методе регистрации модуля plRegister, например pl_news. Основными файлами модуля являются:

  • <идентификатор_модуля>.php Содержит все функции, реализующие события модуля. Вызывается только когда запрашивается событие модуля.
  • <идентификатор_модуля>.h.php Содержит код инициализации модуля, вызывается только один раз при входе пользователя в систему.
  • <идентификатор_модуля>.inc.php Всегда включается в систему и содержит функции, реализующие события модуля, которые должны быть доступны всегда, независимо от того, доступен ли сам модуль текущему пользователю или нет. Данный файл может отсутствовать.
Языковые файлы модуля располагаются в директории /cms/lang/<язык>/. Языковыми файлами модуля являются:

  • <идентификатор_модуля>.lng.php Содержит языковые контстанты, используемые в файле <идентификатор_модуля>.php.
  • <идентификатор_модуля>.h.lng.php Содержит языковые контстанты, используемые в файлах <идентификатор_модуля>.h.php и <идентификатор_модуля>.inc.php.
Иконка модуля располагается в директории /cms/images/. Иконки может не быть вообще. Файлы иконок должны именоваться следующим образом:

  • <идентификатор_модуля>_24.gif или <идентификатор_модуля>_24.png Иконка для меню и панели инструментов, размер иконки 24 х 24 px.
И, наконец, файлы, реализующие вывод информации в браузер посетителя сайта, располагаются в поддиректории директории /prog/. Имя этой поддиректории должно совпадать с уникальным идентификатором модуля, как он указан в методе регистрации модуля plRegister, например pl_news. Имена файлов могут быть любыми и вызваются в функциях, отвечающих за визуализацию элементов модуля.

Каждый модуль системы представляет набор событий и функций-обработчиков этих событий.

Данный класс использует библиотеку работы с базой данных и класс $_SESSION['sbAuth'].

  • author: Казбек Елекоев <elekoev@binn.ru>
  • version: 4.0
  • copyright: Copyright (c) 2007, OOO "СИБИЭС Групп"
  • see: $_SESSION['sbPlugins']
  • see: $_SESSION['sbAuth']

Располагается в /lib/sbPlugins.inc.php (строка 62)


	
			
Переменные (список)
Методы (список)
void __destruct ()
void addElem (string $name, string $ident, string $get_func, [ $info_func = ''], [int $get_event = ''], [int $dlg_width = 640], [ $dlg_height = 480])
void addEventsRights (string $right_ident, string $right_desc)
void addSetting (string $tab_name, string $setting_ident, [string $setting_desc = ''], [string $setting_type = 'string'], [string $setting_type_values = ''], [string $setting_value = ''], [strign $setting_domain = 'all'], [ $check = true], string $system)
void addSystemEvent (string $event, string $function, [string $title = ''])
void addToCache ()
void addToCalendar (string $title, string $table, string $id_field, string $date_field, [string $sql = ''], [string $cat_ident = ''])
void addToConstructor (string $table, [bool $use_categs = true])
void addToMailTemplates (array $tags, string $get_func, [string $delete_event = ''])
void addToMainPage (string $event, string $title, [string $icon = ''])
void addToMenu (string $item, string $event, [string $icon = ''])
void addToRubrikator (string $cat_ident, string $title, [string $temps_list_ident = ''], [string $temps_full_ident = ''])
void addUserEvent (string $event, string $function, [string $rights = ''], [string $title = ''])
void addUserSetting (string $tab_name, string $setting_ident, string $setting_desc, [string $setting_type = 'string'], [string $setting_type_values = ''], [string $setting_value = ''], [ $check = true], string $system)
bool checkForUser (string $pl_name)
array getAllSettings ()
array getElems ()
mixed getEventFunction (string $event)
mixed getEventPlugin (string $event)
mixed getEventTip (string $event, [int $index = -1])
mixed getEventTitle (string $event)
mixed getIncFiles ()
mixed getIncLangFiles ()
string getMenu ()
string getPluginHelp (string $event)
string getPluginIcon (string $plugin)
array getPluginsInfo ()
string getPluginTitle (string $plugin)
array getQuickToolbarIcons (string $event)
mixed getSetting (string $setting_ident)
array getToolbarIcons ()
mixed getUserSetting (string $setting_ident)
bool isEventAvailable (string $event)
bool isPluginAvailable (string $plugin)
bool isRightAvailable (string $plugin, string $rights)
bool register (string $pl_name, string $pl_title, [string $pl_help_url = ''], [bool $pl_check_user = true], [bool $pl_check_key = true], [bool $pl_core = false])
void setSetting (string $setting_ident, mixed $setting_value,  $setting_domain)
void setUserSetting (string $setting_ident, mixed $setting_value)
Переменные
array $mCalendar = array() (строка 193)

Содержит список модулей, использующих календарь

  • access: public
array $mContainers = array() (строка 247)

Массив, содержащий события модулей, выносимые на главную страницу системы в виде перетаскиваемых областей

  1.  $this->mContainers[$iarray();
  2.  // событие, вызываемое для получения содержимого области
  3.  $this->mContainers[$i]['event']   = ...;
  4.  // заголовок области
  5.  $this->mContainers[$i]['title']   = ...;
  6.  // иконка области
  7.  $this->mContainers[$i]['icon']    = ...;
  8.  // область свернута (true) или развернута (false)
  9.  $this->mContainers[$i]['roll']    false;

  • access: public
array $mMailTemplates = array() (строка 202)

Массив, содержащий список событий модуля для редактирования макетов дизайн писем

Используется в методе addToMailTemplates.

  • access: public
array $mMenu = array() (строка 159)

Массив, хранящий информацию о меню системы

  1.  $i count($this->mMenu);
  2.  $this->mMenu[$iarray();
  3.  
  4.  // текст пункта меню
  5.  $this->mMenu[$i]['item'= ...;
  6.  // иконка пункта меню
  7.  $this->mMenu[$i]['icon'= ...;
  8.  // событие модуля, вызываемое при щелчке по пункту меню
  9.  $this->mMenu[$i]['event'= ...;

  • access: public
array $mRubrikator = array() (строка 186)

Содержит список модулей, использующих рубрикатор

  • access: public
Методы
Деструктор __destruct (строка 263)

Деструктор класса, сбрасываем все переменные.

  • access: public
void __destruct ()
addElem (строка 828)

Добавляет в систему элемент модуля

Элементы модуля - это те кирпичики, из которых строится сайт. Элементами, например, являются новостная лента и подробная новость, форма подписки на лист рассылки, форма логина, форма регистрации пользователя и многие другие.

  • access: public
void addElem (string $name, string $ident, string $get_func, [ $info_func = ''], [int $get_event = ''], [int $dlg_width = 640], [ $dlg_height = 480])
  • string $name: Название элемента.
  • string $ident: Уникальный идентификатор элемента. Формируется из идентификатора модуля, знака _ и переданного идентификатора элемента.
  • string $get_func: Имя функции, выводящей элемент. Результат, возвращаемый данной функцией, должен быть HTML или PHP кодом. Именно этот код будет подставлен вместо элемента в сгенерированной системой странице вместо элемента.
  • int $get_event: dlg_width Ширина диалогового окна, вызываемого при сопоставлении элемента с тегом макета дизайна.
  • int $dlg_width: dlg_height Высота диалогового окна, вызываемого при сопоставлении элемента с тегом макета дизайна.
  • $info_func
  • $dlg_height
addEventsRights (строка 506)

Добавляет новое право в группу прав для событий модуля

  • access: public
void addEventsRights (string $right_ident, string $right_desc)
  • string $right_ident: Идентификатор права.
  • string $right_desc: Описание права.
addSetting (строка 654)

Добавляет системную настройку для модуля.

  • access: public
void addSetting (string $tab_name, string $setting_ident, [string $setting_desc = ''], [string $setting_type = 'string'], [string $setting_type_values = ''], [string $setting_value = ''], [strign $setting_domain = 'all'], [ $check = true], string $system)
  • string $tab_name: Название закладки, в которую будет добавлена настройка.
  • string $setting_ident: Уникальный идентификатор настройки. Формируется из идентификатора модуля, знака _ и переданного идентификатора настройки.
  • string $setting_desc: Описание настройки.
  • string $setting_type: Тип настройки. Возможны следующие типы настроек: string, number, checkbox, checkboxes, select, multiselect, radio.
  • string $setting_type_values: Для типов checkboxes, select, multiselect и radio - массив, ключи которого являются значениями опций, а значения - описаниями.
  • string $setting_value: Значение для настройки. Для типа string это строка. Для типа number - число. Для типа checkbox 1, если настройка помечена по умолчанию и 0 в ином случае. Для типов checkboxes, select, multiselect и radio - массив значений из списка $setting_type_vlues.
  • strign $setting_domain: Домен, для которого устанавливается настройка. Если передать 'all', настройка будет установлена для всех доменов.
  • string $system: TRUE, если это настройка ядра системы и должна быть доступна всем пользователям системы, FALSE в том случае, если настройка не должна быть доступна пользователям, не имеющим прав доступа к модулю.
  • $check
addSystemEvent (строка 481)

Добавляет системное событие для регистрируемого модуля

Системные события, в отличие от пользовательских, добавляются всегда, независимо от того разрешен модуль текущему пользователю или нет.

  • access: public
void addSystemEvent (string $event, string $function, [string $title = ''])
  • string $event: Идентификатор события (собирается из идентификатора модуля, знака _ и собственно идентификатора события). У одного модуля не может быть несколько событий с одним идентификатором.
  • string $function: Имя функция, реализующая добавляемое событие.
  • string $title: Название события (отображается в заголовках диалоговых окон и пр.)
addToCache (строка 587)

Добавляет модуль в список модулей, использующих кэширование на сайте

  • access: public
void addToCache ()
addToCalendar (строка 549)

Делает записи таблицы БД модуля доступными для вывода через календарь

  • access: public
void addToCalendar (string $title, string $table, string $id_field, string $date_field, [string $sql = ''], [string $cat_ident = ''])
  • string $title: Название модуля в календаре.
  • string $table: Название таблицы БД модуля.
  • string $id_field: Поле (обычно auto_increment), содержащее уникальные идентификаторы записи.
  • string $date_field: Поле, содержащее дату.
  • string $sql: Доп. SQL-строка, добавляемая в блок WHERE.
  • string $cat_ident: Уникальный идентификатор разделов модуля (если таковые есть).
addToConstructor (строка 571)

Добавляет модуль в конструктор модулей

  • access: public
void addToConstructor (string $table, [bool $use_categs = true])
  • string $table: Таблица БД модуля, в которую будут добавлены новые поля модуля.
  • bool $use_categs: Разрешено ли добавлять пользовательские поля к разделам модуля.
addToMailTemplates (строка 612)

Добавляет событие модуля в список событий для редактирования макетов дизайна писем, отправляемых пользователям сайта

  • access: public
void addToMailTemplates (array $tags, string $get_func, [string $delete_event = ''])
  • array $tags: Массив тегов и их описаний, использующихся в макете дизайна письма. Например:
    1.  $tags array();
    2.  $i 0;
    3.  $tags[$i++array('{SU_MAIN_LOGIN}''Логин пользователя сайта');
    4.  $tags[$i++array('{SU_MAIN_EMAIL}''E-mail пользователя сайта');
    5.  // это часть массива, использующегося для формирования писем, отправляемым пользователям сайта при регистрации и т.п.
  • string $get_func: Имя функции для получения элемента макета дизайна внутри системы.
  • string $delete_event: Событие, вызываемое при удалении макета дизайна письма. Используется, например, для проверки не связан ли удаляемый макет дизайна письма с макетом дизайна элемента.
addToMainPage (строка 784)

Добавляет событе на главную страницу системы (перетаскиваемые области)

  • access: public
void addToMainPage (string $event, string $title, [string $icon = ''])
  • string $event: Добавляемое событие.
  • string $title: Заголовок перетаскиваемой области.
  • string $icon: Иконка перетаскиваемой области. Если не указана, используется иконка модуля.
addToMenu (строка 406)

Добавляет в меню системы ссылку на событие модуля

  • access: public
void addToMenu (string $item, string $event, [string $icon = ''])
  • string $item: Текст пункта меню. Указывается полный путь к пункту, разделитель - '>'. Например, Меню пользователя>Обратная связь>Вопрос-Ответ
  • string $event: Идентификатор события.
  • string $icon: Иконка пункта меню, если не указана, то берется иконка модуля.
addToRubrikator (строка 525)

Делает разделы модуля доступными для вывода на сайте

  • access: public
void addToRubrikator (string $cat_ident, string $title, [string $temps_list_ident = ''], [string $temps_full_ident = ''])
  • string $cat_ident: Уникальный идентификатор разделов модуля.
  • string $title: Название модуля в рубрикаторе.
  • string $temps_list_ident: Уникальный идентификатор разделов макетов дизайна вывода разделов.
  • string $temps_full_ident: Уникальный идентификатор разделов макетов дизайна вывода выбранного раздела.
addUserEvent (строка 449)

Добавляет пользовательское событие для регистрируемого модуля

Пользовательские события, в отличие от системных, добавляются только в том случае, если модуль разрешен текущему пользователю.

  • access: public
void addUserEvent (string $event, string $function, [string $rights = ''], [string $title = ''])
  • string $event: Идентификатор события (собирается из идентификатора модуля, знака _ и собственно идентификатора события). У одного модуля не может быть несколько событий с одним идентификатором.
  • string $function: Имя функция, реализующая добавляемое событие.
  • string $rights: Какими правами должен обладать пользователь для вызова данного события (например 'read' или 'read|write'). Права описываются отдельно. Разделителем прав является |. Для событий, реализующих работу с разделами модуля есть преопределенное кол-во прав - categ_write, categ_delete, categ_rights. Эти идентификаторы зарезервированны. Если права не указаны, то событие будет доступно всегда, когда доступен сам модуль.
  • string $title: Название события (отображается в заголовках диалоговых окон и пр.)
addUserSetting (строка 746)

Добавляет пользовательскую настройку для модуля.

  • access: public
void addUserSetting (string $tab_name, string $setting_ident, string $setting_desc, [string $setting_type = 'string'], [string $setting_type_values = ''], [string $setting_value = ''], [ $check = true], string $system)
  • string $tab_name: Название закладки, в которую будет добавлена настройка.
  • string $setting_ident: Уникальный идентификатор настройки. Формируется из идентификатора модуля, знака _ и переданного идентификатора настройки.
  • string $setting_desc: Описание настройки.
  • string $setting_type: Тип настройки. Возможны следующие типы настроек: string, number, checkbox, checkboxes, select, multiselect, radio.
  • string $setting_type_values: Для типов checkboxes, select, multiselect и radio - - массив, ключи которого являются значениями опций, а значения - описаниями.
  • string $setting_value: Значение для настройки. Для типа string это строка. Для типа number - число. Для типа checkbox 1, если настройка помечена по умолчанию и 0 в ином случае. Для типов checkboxes, select, multiselect и radio - массив значений из списка $setting_type_vlues.
  • string $system: TRUE, если это настройка ядра системы и должна быть доступна всем пользователям системы, FALSE в том случае, если настройка не должна быть доступна пользователям, не имеющим прав доступа к модулю.
  • $check
checkForUser (строка 1432)

Проверяет, разрешен ли модуль текущему пользователю

  • return: TRUE, если модуль разрешен, и FALSE, если модуль запрещен.
  • access: public
bool checkForUser (string $pl_name)
  • string $pl_name: Идентификатор модуля.
getAllSettings (строка 859)

Возвращает массив со всеми настройками системы

Метод отрабатывает, только если модуль настроек системы доступен пользователю.

  • return: Массив с настройками системы.
  • access: public
array getAllSettings ()
getAllUserSettings (строка 874)

Возвращает массив со всеми пользовательскими настройками системы

Метод отрабатывает, только если модуль пользовательских настроек системы доступен пользователю.

  • return: Массив с пользовательскими настройками системы.
  • access: public
array getAllUserSettings ()
getElems (строка 1306)

Возвращает массив с зарегистрированными элементами модулей

  • access: public
array getElems ()
getEventFunction (строка 1078)

Возвращает массив, содержащий функцию обработки события и файлы, которые необходимо проинклудить, либо FALSE, если у пользователя недостаточно прав на вызов данного события.

  1.  $result array();
  2.  // файл модуля, содержащий функцию-обработчик события
  3.  $result['include_file'= ...;
  4.  // языковой файл модуля
  5.  $result['lang_file'= ...;
  6.  // имя функции-обработчика события
  7.  $result['function'= ...;

  • return: Массив, содержащий функцию обработки события и файлы, которые необходимо проинклудить, либо FALSE, если у пользователя недостаточно прав на вызов данного события.
  • access: public
mixed getEventFunction (string $event)
  • string $event: Событие, для которого пытаемся определить функцию-обработчик.
getEventPlugin (строка 1120)

Возвращает идентификатор модуля, к которому принадлежит событие, или FALSE, если событие не зарегистрированно в системе

  • return: Идентификатор модуля, к которому принадлежит событие, или FALSE, если событие не зарегистрированно в системе.
  • access: public
mixed getEventPlugin (string $event)
  • string $event: Идентификатор события.
getEventTip (строка 1138)

Возвращает подсказку и индекс подсказки для события.

  • return: Массив, первый элемент которого - подсказка, второй - индекс подсказки. Или FALSE, если у события нет подсказок.
  • access: public
mixed getEventTip (string $event, [int $index = -1])
  • string $event: Идентификатор события.
  • int $index: Идентификатор текущей подсказки.
getEventTitle (строка 1196)

Возвращает название события

  • return: Название события или FALSE, если такого события нет.
  • access: public
mixed getEventTitle (string $event)
  • string $event: Идентификатор события.
getIncFiles (строка 1168)

Возвращает массив inc-файлов, которые инклудятся всегда, независимо от вызываемого события

  • return: Массив inc-файлов, либо FALSE, если такие файлы не зарегистрированны.
  • access: public
mixed getIncFiles ()
getIncLangFiles (строка 1182)

Возвращает массив lng-файлов, которые инклудятся всегда, независимо от вызываемого события.

В них обычно хранятся языковые константы для inc-файлов.

  • return: Массив lng-файлов, либо FALSE, если такие файлы не зарегистрированны.
  • access: public
mixed getIncLangFiles ()
getMenu (строка 1316)

Возвращает JavaScript-код для построения меню системы

  • return: JavaScript-код для построения меню системы.
  • access: public
string getMenu ()
getPluginHelp (строка 1210)

Возвращает URL справочного файла модуля, к которому принадлежит указанное событие

  • return: URL справочного файла, или пустая строка, если не удалось определить URL.
  • access: public
string getPluginHelp (string $event)
  • string $event: Идентификатор события.
getPluginIcon (строка 1251)

Возвращает иконку модуля

  • return: Иконка модуля, или пустая строка.
  • access: public
string getPluginIcon (string $plugin)
  • string $plugin: Идентификатор модуля или события.
getPluginsInfo (строка 1280)

Возвращает ассоциативный массив с описанием модулей системы

Ключ массива - идентификатор модуля. Значение - ассоциативный массив, в котором присутствуют следующие ключи:

title

  • название модуля icon - иконка модуля rights - описание прав модуля

  • return: Ассоциативный массив с описанием модулей системы. Ключ масива - идентификатор модуля, значение - массив с описанием.
  • access: public
array getPluginsInfo ()
getPluginTitle (строка 1227)

Возвращает название модуля

  • return: Название модуля, или пустая строка.
  • access: public
string getPluginTitle (string $plugin)
  • string $plugin: Идентификатор модуля или события.
getQuickToolbarIcons (строка 1024)

Возвращает массив, содержащий информацию о кнопке панели инструментов

  1.  // иконка кнопки
  2.  $result['icon']
  3.  // всплывающая подсказка для кнопки
  4.  $result['desc']

  • access: public
array getQuickToolbarIcons (string $event)
  • string $event: Событие, для которого пытаемся определить кнопку.
getSetting (строка 888)

Возвращает значение настройки системы по ее идентификатору

  • return: Значение настройки.
  • access: public
mixed getSetting (string $setting_ident)
  • string $setting_ident: Идентификатор настройки.
getSystemMessages (строка 953)

Возвращает массив идентификаторов системных сообщений

  • return: Массив идентификаторов системных сообщений.
  • access: public
array getSystemMessages ()
getToolbarIcons (строка 983)

Возвращает массив, содержащий кнопки панели инструментов для текущего пользователя

  1.  // иконка кнопки
  2.  $result[$i]['icon'$value['icon'];
  3.  // всплывающая подсказка для кнопки
  4.  $result[$i]['desc'$value['desc'];
  5.  // событие, вызываемое при щелчке по кнопке
  6.  $result[$i]['event'$value['event'];

  • access: public
array getToolbarIcons ()
getUserSetting (строка 933)

Возвращает значение пользовательской настройки системы по ее идентификатору

  • return: Значение настройки.
  • access: public
mixed getUserSetting (string $setting_ident)
  • string $setting_ident: Идентификатор настройки.
isEventAvailable (строка 1484)

Проверяет, доступно ли событие текущему пользователю

  • return: TRUE, если событие доступно, и FALSE в ином случае.
  • access: public
bool isEventAvailable (string $event)
  • string $event: Идентификатор события.
isPluginAvailable (строка 1580)

Проверяет, есть ли модуль в системе (в ключе)

  • return: TRUE, если модуль доступен, и FALSE в ином случае.
  • access: public
bool isPluginAvailable (string $plugin)
  • string $plugin: Идентификатор модуля.
isRegisteredPlugins (строка 1473)

Проверяет, есть ли зарегистрированные пользовательские модули

  • return: TRUE, если модули есть, и FALSE в ином случае.
  • access: public
bool isRegisteredPlugins ()
isRightAvailable (строка 1533)

Проверяет, есть ли у пользователя указанные права доступа к модулю

  • return: TRUE, если у пользователя есть права доступа, и FALSE в ином случае.
  • access: public
bool isRightAvailable (string $plugin, string $rights)
  • string $plugin: Идентификатор модуля.
  • string $rights: Права доступа. Разделяются через |.
register (строка 287)

Регистрирует модуль в системе

Данный метод проверяет, разрешен ли модуль в ключе системы, доступен ли модуль текущему пользователю и, если проверки прошли успешно, регистрирует модуль в системе.

  • return: TRUE, если модуль зарегистрирован, и FALSE в ином случае
  • access: public
bool register (string $pl_name, string $pl_title, [string $pl_help_url = ''], [bool $pl_check_user = true], [bool $pl_check_key = true], [bool $pl_core = false])
  • string $pl_name: Уникальный идентификатор модуля, должен обязательно совпадать с именем папки, в которой расположены файлы модуля (например 'pl_news').
  • string $pl_title: Название модуля.
  • string $pl_help_url: URL справочного файла для модуля.
  • bool $pl_check_user: Надо ли проверять модуль на доступность текущему пользователю системы.
  • bool $pl_check_key: Надо ли проверять модуль на доступность в ключе системы.
  • bool $pl_core: TRUE, если модуль библиотечный, и FALSE в ином случае. Библиотечные модули не предоставляют никакого интерфейса пользователю системы, а выполняют служебную роль.
setSetting (строка 918)

Устанавливает настройку системы

Метод отрабатывает, только если у пользователя есть доступ к модулю настроек системы.

  • access: public
void setSetting (string $setting_ident, mixed $setting_value,  $setting_domain)
  • string $setting_ident: Идентификатор настройки.
  • mixed $setting_value: Значение настройки.
  • $setting_domain
setUserSetting (строка 964)

Устанавливает пользовательскую настройку

  • access: public
void setUserSetting (string $setting_ident, mixed $setting_value)
  • string $setting_ident: Идентификатор настройки.
  • mixed $setting_value: Значение настройки.
Техническая поддержка:
Сайт: http://www.sbuilder.ru/tec_support.php
E-mail: support@sbuilder.ru
Copyright © 2001-2008, ООО "СИБИЭС Групп"
Документация сгенерирована с использованием phpDocumentor