mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-06-26 03:30:48 +03:00
Документация классов
This commit is contained in:
parent
a66b1d642d
commit
29a8ad9f32
150
engine/modules/cache/Cache.class.php
vendored
150
engine/modules/cache/Cache.class.php
vendored
|
@ -30,13 +30,62 @@ define('SYS_CACHE_TYPE_MEMORY','memory');
|
|||
define('SYS_CACHE_TYPE_XCACHE','xcache');
|
||||
|
||||
/**
|
||||
* Модуль кеширования
|
||||
* Работает в двух режимах: файловый кеш через Cache Lite и кеш в памяти через Memcache
|
||||
* Модуль кеширования.
|
||||
* Для реализации кеширования используетс библиотека Zend_Cache с бэкэндами File, Memcache и XCache.
|
||||
* Т.к. в memcache нет встроенной поддержки тегирования при кешировании, то для реализации тегов используется враппер от Дмитрия Котерова - Dklab_Cache_Backend_TagEmuWrapper.
|
||||
*
|
||||
* Пример использования:
|
||||
* <pre>
|
||||
* // Получает пользователя по его логину
|
||||
* public function GetUserByLogin($sLogin) {
|
||||
* // Пытаемся получить значение из кеша
|
||||
* if (false === ($oUser = $this->Cache_Get("user_login_{$sLogin}"))) {
|
||||
* // Если значение из кеша получить не удалось, то обращаемся к базе данных
|
||||
* $oUser = $this->oMapper->GetUserByLogin($sLogin);
|
||||
* // Записываем значение в кеш
|
||||
* $this->Cache_Set($oUser, "user_login_{$sLogin}", array(), 60*60*24*5);
|
||||
* }
|
||||
* return $oUser;
|
||||
* }
|
||||
*
|
||||
* // Обновляет пользовател в БД
|
||||
* public function UpdateUser($oUser) {
|
||||
* // Удаляем кеш конкретного пользователя
|
||||
* $this->Cache_Delete("user_login_{$oUser->getLogin()}");
|
||||
* // Удалем кеш со списком всех пользователей
|
||||
* $this->Cache_Clean(Zend_Cache::CLEANING_MODE_MATCHING_TAG,array('user_update'));
|
||||
* // Обновлем пользовател в базе данных
|
||||
* return $this->oMapper->UpdateUser($oUser);
|
||||
* }
|
||||
*
|
||||
* // Получает список всех пользователей
|
||||
* public function GetUsers() {
|
||||
* // Пытаемся получить значение из кеша
|
||||
* if (false === ($aUserList = $this->Cache_Get("users"))) {
|
||||
* // Если значение из кеша получить не удалось, то обращаемся к базе данных
|
||||
* $aUserList = $this->oMapper->GetUsers();
|
||||
* // Записываем значение в кеш
|
||||
* $this->Cache_Set($aUserList, "users", array('user_update'), 60*60*24*5);
|
||||
* }
|
||||
* return $aUserList;
|
||||
* }
|
||||
* </pre>
|
||||
*
|
||||
* @package engine.modules
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleCache extends Module {
|
||||
|
||||
/**
|
||||
* Объект бэкенда кеширования
|
||||
*
|
||||
* @var Zend_Cache_Backend
|
||||
*/
|
||||
protected $oBackendCache=null;
|
||||
/**
|
||||
* Используется кеширование или нет
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $bUseCache;
|
||||
/**
|
||||
* Тип кеширования, прописан в глобльном конфиге config.php
|
||||
|
@ -44,16 +93,34 @@ class ModuleCache extends Module {
|
|||
* @var string
|
||||
*/
|
||||
protected $sCacheType;
|
||||
|
||||
/**
|
||||
* Статистика кеширования
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aStats=array(
|
||||
'time' =>0,
|
||||
'count' => 0,
|
||||
'count_get' => 0,
|
||||
'count_set' => 0,
|
||||
);
|
||||
|
||||
/**
|
||||
* Хранилище для кеша на время сессии
|
||||
* @see SetLife
|
||||
* @see GetLife
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $aStoreLife=array();
|
||||
/**
|
||||
* Префикс для "умного" кеширования
|
||||
* @see SmartSet
|
||||
* @see SmartGet
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $sPrefixSmartCache='for-smart-cache-';
|
||||
|
||||
/**
|
||||
* Инициализируем нужный тип кеша
|
||||
*
|
||||
|
@ -65,6 +132,9 @@ class ModuleCache extends Module {
|
|||
if (!$this->bUseCache) {
|
||||
return false;
|
||||
}
|
||||
/**
|
||||
* Файловый кеш
|
||||
*/
|
||||
if ($this->sCacheType==SYS_CACHE_TYPE_FILE) {
|
||||
require_once(LS_DKCACHE_PATH.'Zend/Cache/Backend/File.php');
|
||||
$oCahe = new Zend_Cache_Backend_File(
|
||||
|
@ -78,12 +148,18 @@ class ModuleCache extends Module {
|
|||
)
|
||||
);
|
||||
$this->oBackendCache = new Dklab_Cache_Backend_Profiler($oCahe,array($this,'CalcStats'));
|
||||
/**
|
||||
* Кеш на основе Memcached
|
||||
*/
|
||||
} elseif ($this->sCacheType==SYS_CACHE_TYPE_MEMORY) {
|
||||
require_once(LS_DKCACHE_PATH.'Zend/Cache/Backend/Memcached.php');
|
||||
$aConfigMem=Config::Get('memcache');
|
||||
|
||||
$oCahe = new Dklab_Cache_Backend_MemcachedMultiload($aConfigMem);
|
||||
$this->oBackendCache = new Dklab_Cache_Backend_TagEmuWrapper(new Dklab_Cache_Backend_Profiler($oCahe,array($this,'CalcStats')));
|
||||
/**
|
||||
* Кеш на основе XCache
|
||||
*/
|
||||
} elseif ($this->sCacheType==SYS_CACHE_TYPE_XCACHE) {
|
||||
require_once(LS_DKCACHE_PATH.'Zend/Cache/Backend/Xcache.php');
|
||||
$aConfigMem=Config::Get('xcache');
|
||||
|
@ -100,13 +176,11 @@ class ModuleCache extends Module {
|
|||
$this->Clean(Zend_Cache::CLEANING_MODE_OLD);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Получить значение из кеша
|
||||
*
|
||||
* @param string $sName
|
||||
* @return unknown
|
||||
* @param string $sName Имя ключа
|
||||
* @return mixed|bool
|
||||
*/
|
||||
public function Get($sName) {
|
||||
if (!$this->bUseCache) {
|
||||
|
@ -129,9 +203,10 @@ class ModuleCache extends Module {
|
|||
}
|
||||
/**
|
||||
* Получения значения из "умного" кеша для борьбы с конкурирующими запросами
|
||||
* Если кеш "протух", и за ним обращаются много запросов, то только первый запрос вернет FALSE, остальные будут получать чуть устаревшие данные из временного кеша, пока их не обновит первый запрос
|
||||
*
|
||||
* @param $sName
|
||||
* @return bool|unknown
|
||||
* @param $sName Имя ключа
|
||||
* @return bool|mixed
|
||||
*/
|
||||
public function SmartGet($sName) {
|
||||
if (!$this->bUseCache) {
|
||||
|
@ -146,9 +221,10 @@ class ModuleCache extends Module {
|
|||
return $data;
|
||||
}
|
||||
/**
|
||||
* псевдо поддержка мульти-запросов к кешу
|
||||
* Поддержка мульти-запросов к кешу
|
||||
* Такие запросы поддерживает только memcached, поэтому для остальных типов делаем эмуляцию
|
||||
*
|
||||
* @param array $aName
|
||||
* @param array $aName Имя ключа
|
||||
* @return bool|array
|
||||
*/
|
||||
public function multiGet($aName) {
|
||||
|
@ -189,10 +265,10 @@ class ModuleCache extends Module {
|
|||
/**
|
||||
* Записать значение в кеш
|
||||
*
|
||||
* @param mixed $data
|
||||
* @param string $sName
|
||||
* @param array $aTags
|
||||
* @param int $iTimeLife
|
||||
* @param mixed $data Данные для хранения в кеше
|
||||
* @param string $sName Имя ключа
|
||||
* @param array $aTags Список тегов, для возможности удалять сразу несколько кешей по тегу
|
||||
* @param int $iTimeLife Время жизни кеша в секундах
|
||||
* @return bool
|
||||
*/
|
||||
public function Set($data,$sName,$aTags=array(),$iTimeLife=false) {
|
||||
|
@ -210,11 +286,12 @@ class ModuleCache extends Module {
|
|||
}
|
||||
/**
|
||||
* Устанавливаем значение в "умном" кеша для борьбы с конкурирующими запросами
|
||||
* Дополнительно сохраняет значение во временном кеше на чуть большее время
|
||||
*
|
||||
* @param mixed $data
|
||||
* @param string $sName
|
||||
* @param array $aTags
|
||||
* @param int $iTimeLife
|
||||
* @param mixed $data Данные для хранения в кеше
|
||||
* @param string $sName Имя ключа
|
||||
* @param array $aTags Список тегов, для возможности удалять сразу несколько кешей по тегу
|
||||
* @param int $iTimeLife Время жизни кеша в секундах
|
||||
* @return bool
|
||||
*/
|
||||
public function SmartSet($data,$sName,$aTags=array(),$iTimeLife=false) {
|
||||
|
@ -224,7 +301,7 @@ class ModuleCache extends Module {
|
|||
/**
|
||||
* Удаляет значение из кеша по ключу(имени)
|
||||
*
|
||||
* @param unknown_type $sName
|
||||
* @param string $sName Имя ключа
|
||||
* @return bool
|
||||
*/
|
||||
public function Delete($sName) {
|
||||
|
@ -240,8 +317,8 @@ class ModuleCache extends Module {
|
|||
/**
|
||||
* Чистит кеши
|
||||
*
|
||||
* @param void $cMode
|
||||
* @param array $aTags
|
||||
* @param int $cMode Режим очистки кеша
|
||||
* @param array $aTags Список тегов, актуально для режима Zend_Cache::CLEANING_MODE_MATCHING_TAG
|
||||
* @return bool
|
||||
*/
|
||||
public function Clean($cMode = Zend_Cache::CLEANING_MODE_ALL, $aTags = array()) {
|
||||
|
@ -251,10 +328,10 @@ class ModuleCache extends Module {
|
|||
return $this->oBackendCache->clean($cMode,$aTags);
|
||||
}
|
||||
/**
|
||||
* Статистика использования кеша
|
||||
* Подсчет статистики использования кеша
|
||||
*
|
||||
* @param unknown_type $iTime
|
||||
* @param unknown_type $sMethod
|
||||
* @param int $iTime Время выполнения метода
|
||||
* @param string $sMethod имя метода
|
||||
*/
|
||||
public function CalcStats($iTime,$sMethod) {
|
||||
$this->aStats['time']+=$iTime;
|
||||
|
@ -266,26 +343,29 @@ class ModuleCache extends Module {
|
|||
$this->aStats['count_set']++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращает статистику использования кеша
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetStats() {
|
||||
return $this->aStats;
|
||||
}
|
||||
|
||||
/**
|
||||
* Сохраняет значение в кеше на время исполнения скрипта (некий аналог Registry)
|
||||
* Сохраняет значение в кеше на время исполнения скрипта(сессии), некий аналог Registry
|
||||
*
|
||||
* @param unknown_type $data
|
||||
* @param unknown_type $sName
|
||||
* @param mixed $data Данные для сохранения в кеше
|
||||
* @param string $sName Имя ключа
|
||||
*/
|
||||
public function SetLife($data,$sName) {
|
||||
$this->aStoreLife[$sName]=$data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Получает значение из текущего кеша скрипта
|
||||
* Получает значение из текущего кеша сессии
|
||||
*
|
||||
* @param unknown_type $sName
|
||||
* @return unknown
|
||||
* @param string $sName Имя ключа
|
||||
* @return mixed
|
||||
*/
|
||||
public function GetLife($sName) {
|
||||
if (key_exists($sName,$this->aStoreLife)) {
|
||||
|
|
|
@ -19,7 +19,13 @@ require_once(Config::Get('path.root.engine').'/lib/external/DbSimple/Generic.php
|
|||
/**
|
||||
* Модуль для работы с базой данных
|
||||
* Создаёт объект БД библиотеки DbSimple Дмитрия Котерова
|
||||
* Модуль используется в основном для создания коннекта к БД и передачи его в маппер
|
||||
* @see Mapper::__construct
|
||||
* Так же предоставляет методы для быстрого выполнения запросов/дампов SQL, актуально для плагинов
|
||||
* @see Plugin::ExportSQL
|
||||
*
|
||||
* @package engine.modules
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleDatabase extends Module {
|
||||
/**
|
||||
|
@ -39,8 +45,8 @@ class ModuleDatabase extends Module {
|
|||
/**
|
||||
* Получает объект БД
|
||||
*
|
||||
* @param array $aConfig - конфиг подключения к БД(хост, логин, пароль, тип бд, имя бд)
|
||||
* @return DbSimple
|
||||
* @param array|null $aConfig - конфиг подключения к БД(хост, логин, пароль, тип бд, имя бд), если null, то используются параметры из конфига Config::Get('db.params')
|
||||
* @return DbSimple_Generic_Database DbSimple
|
||||
*/
|
||||
public function GetConnect($aConfig=null) {
|
||||
/**
|
||||
|
@ -89,8 +95,11 @@ class ModuleDatabase extends Module {
|
|||
return $oDbSimple;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Возвращает статистику использования БД - время и количество запросов
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function GetStats() {
|
||||
$aQueryStats=array('time'=>0,'count'=>-1); // не считаем тот самый костыльный запрос, который устанавливает настройки DB соединения
|
||||
foreach ($this->aInstance as $oDb) {
|
||||
|
@ -101,13 +110,13 @@ class ModuleDatabase extends Module {
|
|||
$aQueryStats['time']=round($aQueryStats['time'],3);
|
||||
return $aQueryStats;
|
||||
}
|
||||
|
||||
/**
|
||||
* Экспорт SQL дампа
|
||||
* Экспорт SQL дампа в БД
|
||||
* @see ExportSQLQuery
|
||||
*
|
||||
* @param unknown_type $sFilePath
|
||||
* @param unknown_type $aConfig
|
||||
* @return unknown
|
||||
* @param string $sFilePath Полный путь до файла SQL
|
||||
* @param array|null $aConfig Конфиг подключения к БД
|
||||
* @return array
|
||||
*/
|
||||
public function ExportSQL($sFilePath,$aConfig=null) {
|
||||
if(!is_file($sFilePath)){
|
||||
|
@ -120,11 +129,11 @@ class ModuleDatabase extends Module {
|
|||
}
|
||||
|
||||
/**
|
||||
* Экспорт SQL
|
||||
* Экспорт SQL в БД
|
||||
*
|
||||
* @param unknown_type $sFileQuery
|
||||
* @param unknown_type $aConfig
|
||||
* @return unknown
|
||||
* @param string $sFileQuery Строка с SQL запросом
|
||||
* @param array|null $aConfig Конфиг подключения к БД
|
||||
* @return array Возвращает массив вида array('result'=>bool,'errors'=>array())
|
||||
*/
|
||||
public function ExportSQLQuery($sFileQuery,$aConfig=null) {
|
||||
/**
|
||||
|
@ -152,7 +161,6 @@ class ModuleDatabase extends Module {
|
|||
if($bResult===false) $aErrors[] = mysql_error();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Возвращаем результат выполнения, взависимости от количества ошибок
|
||||
*/
|
||||
|
@ -161,12 +169,11 @@ class ModuleDatabase extends Module {
|
|||
}
|
||||
return array('result'=>false,'errors'=>$aErrors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет существование таблицы
|
||||
*
|
||||
* @param string $sTableName
|
||||
* @param array $aConfig
|
||||
* @param string $sTableName Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
|
||||
* @param array|null $aConfig Конфиг подключения к БД
|
||||
* @return bool
|
||||
*/
|
||||
public function isTableExists($sTableName,$aConfig=null) {
|
||||
|
@ -177,13 +184,12 @@ class ModuleDatabase extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Проверяет существование поля в таблице
|
||||
*
|
||||
* @param string $sTableName
|
||||
* @param string $sFieldName
|
||||
* @param array $aConfig
|
||||
* @param string $sTableName Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
|
||||
* @param string $sFieldName Название поля в таблице
|
||||
* @param array|null $aConfig Конфиг подключения к БД
|
||||
* @return bool
|
||||
*/
|
||||
public function isFieldExists($sTableName,$sFieldName,$aConfig=null) {
|
||||
|
@ -198,14 +204,13 @@ class ModuleDatabase extends Module {
|
|||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Доавляет новый тип в поле таблицы с типом enum
|
||||
*
|
||||
* @param string $sTableName
|
||||
* @param string $sFieldName
|
||||
* @param string $sType
|
||||
* @param array $aConfig
|
||||
* @param string $sTableName Название таблицы, необходимо перед именем таблицы добавлять "prefix_", это позволит учитывать произвольный префикс таблиц у пользователя
|
||||
* @param string $sFieldName Название поля в таблице
|
||||
* @param string $sType Название типа
|
||||
* @param array|null $aConfig Конфиг подключения к БД
|
||||
*/
|
||||
public function addEnumType($sTableName,$sFieldName,$sType,$aConfig=null) {
|
||||
$sTableName = str_replace('prefix_', Config::Get('db.table.prefix'), $sTableName);
|
||||
|
@ -230,8 +235,8 @@ class ModuleDatabase extends Module {
|
|||
/**
|
||||
* Функция хука для перехвата SQL ошибок
|
||||
*
|
||||
* @param string $message
|
||||
* @param unknown_type $info
|
||||
* @param string $message Сообщение об ошибке
|
||||
* @param array $info Список информации об ошибке
|
||||
*/
|
||||
function databaseErrorHandler($message, $info) {
|
||||
/**
|
||||
|
@ -267,7 +272,7 @@ function databaseErrorHandler($message, $info) {
|
|||
* Функция логгирования SQL запросов
|
||||
*
|
||||
* @param object $db
|
||||
* @param unknown_type $sql
|
||||
* @param array $sql
|
||||
*/
|
||||
function databaseLogger($db, $sql) {
|
||||
/**
|
||||
|
|
|
@ -15,11 +15,64 @@
|
|||
---------------------------------------------------------
|
||||
*/
|
||||
/**
|
||||
* Модуль поддержки хуков(hooks)
|
||||
* Модуль обработки хуков(hooks)
|
||||
* В различных местах кода могут быть определеные вызовы хуков, например:
|
||||
* <pre>
|
||||
* $this->Hook_Run('topic_edit_before', array('oTopic'=>$oTopic,'oBlog'=>$oBlog));
|
||||
* </pre>
|
||||
* Данный вызов "вешает" хук "topic_edit_before"
|
||||
* Чтобы повесить обработчик на этот хук, его нужно объявить, например, через файл в /classes/hooks/HookTest.class.php
|
||||
* <pre>
|
||||
* class HookTest extends Hook {
|
||||
* // Регистрируем хуки (вешаем обработчики)
|
||||
* public function RegisterHook() {
|
||||
* $this->AddHook('topic_edit_before','TopicEdit');
|
||||
* }
|
||||
* // обработчик хука
|
||||
* public function TopicEdit($aParams) {
|
||||
* $oTopic=$aParams['oTopic'];
|
||||
* $oTopic->setTitle('My title!');
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* В данном примере после редактирования топика заголовок у него поменяется на "My title!"
|
||||
*
|
||||
* Если хук объявлен в шаблоне, например,
|
||||
* <pre>
|
||||
* {hook run='html_head_end'}
|
||||
* </pre>
|
||||
* То к имени хука автоматически добаляется префикс "template_" и обработчик на него вешать нужно так:
|
||||
* <pre>
|
||||
* $this->AddHook('template_html_head_end','InjectHead');
|
||||
* </pre>
|
||||
*
|
||||
* Так же существуют блочные хуки, который объявляются в шаблонах так:
|
||||
* <pre>
|
||||
* {hookb run="registration_captcha"}
|
||||
* ... html ...
|
||||
* {/hookb}
|
||||
* </pre>
|
||||
* Они позволяют заменить содержимое между {hookb ..} {/hookb} или добавть к нему произвольный контент. К имени такого хука добавляется префикс "template_block_"
|
||||
* <pre>
|
||||
* class HookTest extends Hook {
|
||||
* // Регистрируем хуки (вешаем обработчики)
|
||||
* public function RegisterHook() {
|
||||
* $this->AddHook('template_block_registration_captcha','MyCaptcha');
|
||||
* }
|
||||
* // обработчик хука
|
||||
* public function MyCaptcha($aParams) {
|
||||
* $sContent=$aParams['content'];
|
||||
* return $sContent.'My captcha!';
|
||||
* }
|
||||
* }
|
||||
* </pre>
|
||||
* В данном примере в конце вывода каптчи будет добавлено "My captcha!"
|
||||
* Обратите внимаете, что в обработчик в параметре "content" передается исходное содержание блока.
|
||||
*
|
||||
* @package engine.modules
|
||||
* @since 1.0
|
||||
*/
|
||||
class ModuleHook extends Module {
|
||||
|
||||
/**
|
||||
* Содержит список хуков
|
||||
*
|
||||
|
@ -35,11 +88,12 @@ class ModuleHook extends Module {
|
|||
*/
|
||||
protected $aHooks=array();
|
||||
/**
|
||||
* Hook objects
|
||||
* Список объектов обработки хукков, для их кешировани
|
||||
*
|
||||
* @var unknown_type
|
||||
* @var array
|
||||
*/
|
||||
protected $aHooksObject=array();
|
||||
|
||||
/**
|
||||
* Инициализация модуля
|
||||
*
|
||||
|
@ -47,7 +101,16 @@ class ModuleHook extends Module {
|
|||
public function Init() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавление обработчика на хук
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sType Тип хука, возможны: module, function, hook
|
||||
* @param string $sCallBack Функция/метод обработки хука
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @param array $aParams Список дополнительных параметров, анпример, имя класса хука
|
||||
* @return bool
|
||||
*/
|
||||
public function Add($sName,$sType,$sCallBack,$iPriority=1,$aParams=array()) {
|
||||
$sName=strtolower($sName);
|
||||
$sType=strtolower($sType);
|
||||
|
@ -56,32 +119,100 @@ class ModuleHook extends Module {
|
|||
}
|
||||
$this->aHooks[$sName][]=array('type'=>$sType,'callback'=>$sCallBack,'params'=>$aParams,'priority'=>(int)$iPriority);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет обработчик хука с типом "module"
|
||||
* Позволяет в качестве обработчика использовать метод модуля
|
||||
* @see Add
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Полное имя метода обработки хука, например, "Mymodule_CallBack"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @return bool
|
||||
*/
|
||||
public function AddExecModule($sName,$sCallBack,$iPriority=1) {
|
||||
return $this->Add($sName,'module',$sCallBack,$iPriority);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет обработчик хука с типом "function"
|
||||
* Позволяет в качестве обработчика использовать функцию
|
||||
* @see Add
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Функция обработки хука, например, "var_dump"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @return bool
|
||||
*/
|
||||
public function AddExecFunction($sName,$sCallBack,$iPriority=1) {
|
||||
return $this->Add($sName,'function',$sCallBack,$iPriority);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет обработчик хука с типом "hook"
|
||||
* Позволяет в качестве обработчика использовать метод хука(класса хука из каталога /classes/hooks/)
|
||||
* @see Add
|
||||
* @see Hook::AddHook
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Метод хука, например, "InitAction"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @param array $aParams Параметры
|
||||
* @return bool
|
||||
*/
|
||||
public function AddExecHook($sName,$sCallBack,$iPriority=1,$aParams=array()) {
|
||||
return $this->Add($sName,'hook',$sCallBack,$iPriority,$aParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет делегирующий обработчик хука с типом "module"
|
||||
* Делегирующий хук применяется для перекрытия метода модуля, результат хука возвращает вместо результата метода модуля
|
||||
* Позволяет в качестве обработчика использовать метод модуля
|
||||
* @see Add
|
||||
* @see Engine::_CallModule
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Полное имя метода обработки хука, например, "Mymodule_CallBack"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @return bool
|
||||
*/
|
||||
public function AddDelegateModule($sName,$sCallBack,$iPriority=1) {
|
||||
return $this->Add($sName,'module',$sCallBack,$iPriority,array('delegate'=>true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет делегирующий обработчик хука с типом "function"
|
||||
* Делегирующий хук применяется для перекрытия метода модуля, результат хука возвращает вместо результата метода модуля
|
||||
* Позволяет в качестве обработчика использовать функцию
|
||||
* @see Add
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Функция обработки хука, например, "var_dump"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @return bool
|
||||
*/
|
||||
public function AddDelegateFunction($sName,$sCallBack,$iPriority=1) {
|
||||
return $this->Add($sName,'function',$sCallBack,$iPriority,array('delegate'=>true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Добавляет делегирующий обработчик хука с типом "hook"
|
||||
* Делегирующий хук применяется для перекрытия метода модуля, результат хука возвращает вместо результата метода модуля
|
||||
* Позволяет в качестве обработчика использовать метод хука(класса хука из каталога /classes/hooks/)
|
||||
* @see Add
|
||||
* @see Hook::AddHook
|
||||
*
|
||||
* @param string $sName Имя хука
|
||||
* @param string $sCallBack Метод хука, например, "InitAction"
|
||||
* @param int $iPriority Приоритер обработки, чем выше, тем раньше сработает хук относительно других
|
||||
* @param array $aParams Параметры
|
||||
* @return bool
|
||||
*/
|
||||
public function AddDelegateHook($sName,$sCallBack,$iPriority=1,$aParams=array()) {
|
||||
$aParams['delegate']=true;
|
||||
return $this->Add($sName,'hook',$sCallBack,$iPriority,$aParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* Запускает обаботку хуков
|
||||
*
|
||||
* @param $sName Имя хука
|
||||
* @param array $aVars Список параметров хука, передаются в обработчик
|
||||
* @return array
|
||||
*/
|
||||
public function Run($sName,&$aVars=array()) {
|
||||
$result=array();
|
||||
$sName=strtolower($sName);
|
||||
|
@ -133,7 +264,13 @@ class ModuleHook extends Module {
|
|||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Запускает обработчик хука в зависимости от туипа обработчика
|
||||
*
|
||||
* @param array $aHook Данные хука
|
||||
* @param array $aVars Параметры переданные в хук
|
||||
* @return mixed|null
|
||||
*/
|
||||
protected function RunType($aHook,&$aVars) {
|
||||
$result=null;
|
||||
switch ($aHook['type']) {
|
||||
|
|
Loading…
Reference in a new issue