2009-05-10 10:50:39 +03:00
|
|
|
|
<?php
|
2009-05-09 20:04:04 +03:00
|
|
|
|
/*-------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* LiveStreet Engine Social Networking
|
|
|
|
|
* Copyright © 2008 Mzhelskiy Maxim
|
|
|
|
|
*
|
|
|
|
|
*--------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreet.ru
|
|
|
|
|
* Contact e-mail: rus.engine@gmail.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
---------------------------------------------------------
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
2009-12-24 22:18:13 +02:00
|
|
|
|
* Абстракция хука, от которой наследуются все хуки
|
2012-04-17 20:58:32 +03:00
|
|
|
|
* Дает возможность создавать обработчики хуков в каталоге /hooks/
|
2009-05-09 20:04:04 +03:00
|
|
|
|
*
|
2012-04-17 20:58:32 +03:00
|
|
|
|
* @package engine
|
|
|
|
|
* @since 1.0
|
2009-05-09 20:04:04 +03:00
|
|
|
|
*/
|
2012-04-07 09:41:52 +03:00
|
|
|
|
abstract class Hook extends LsObject {
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавляет обработчик на хук
|
|
|
|
|
* @see ModuleHook::AddExecHook
|
|
|
|
|
*
|
|
|
|
|
* @param string $sName Название хука на который вешается обработчик
|
|
|
|
|
* @param string $sCallBack Название метода обработчика
|
|
|
|
|
* @param null|string $sClassNameHook Название класса обработчика, по умолчанию это текущий класс хука
|
|
|
|
|
* @param int $iPriority Приоритет обработчика хука, чем выше число, тем больше приоритет - хук обработчик выполнится раньше остальных
|
|
|
|
|
*/
|
2010-06-05 15:24:37 +03:00
|
|
|
|
protected function AddHook($sName,$sCallBack,$sClassNameHook=null,$iPriority=1) {
|
|
|
|
|
if (is_null($sClassNameHook)) {
|
|
|
|
|
$sClassNameHook=get_class($this);
|
|
|
|
|
}
|
2009-05-09 20:04:04 +03:00
|
|
|
|
$this->Hook_AddExecHook($sName,$sCallBack,$iPriority,array('sClassName'=>$sClassNameHook));
|
|
|
|
|
}
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Добавляет делегирующий обработчик на хук. Актуален для хуков на выполнение методов модулей.
|
|
|
|
|
* После него другие обработчики не выполняются, а результат метода моуля заменяется на рузультат обработчика.
|
|
|
|
|
*
|
|
|
|
|
* @param $sName Название хука на который вешается обработчик
|
|
|
|
|
* @param $sCallBack Название метода обработчика
|
|
|
|
|
* @param null $sClassNameHook Название класса обработчика, по умолчанию это текущий класс хука
|
|
|
|
|
* @param int $iPriority Приоритет обработчика хука
|
|
|
|
|
*/
|
2010-06-05 15:24:37 +03:00
|
|
|
|
protected function AddDelegateHook($sName,$sCallBack,$sClassNameHook=null,$iPriority=1) {
|
|
|
|
|
if (is_null($sClassNameHook)) {
|
|
|
|
|
$sClassNameHook=get_class($this);
|
|
|
|
|
}
|
2010-03-26 16:08:16 +02:00
|
|
|
|
$this->Hook_AddDelegateHook($sName,$sCallBack,$iPriority,array('sClassName'=>$sClassNameHook));
|
|
|
|
|
}
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Обязательный метод в хуке - в нем происходит регистрация обработчиков хуков
|
|
|
|
|
*
|
|
|
|
|
* @abstract
|
|
|
|
|
*/
|
2009-05-09 20:04:04 +03:00
|
|
|
|
abstract public function RegisterHook();
|
2012-04-17 20:58:32 +03:00
|
|
|
|
/**
|
|
|
|
|
* Ставим хук на вызов неизвестного метода и считаем что хотели вызвать метод какого либо модуля
|
|
|
|
|
* @see Engine::_CallModule
|
|
|
|
|
*
|
|
|
|
|
* @param string $sName Имя метода
|
|
|
|
|
* @param array $aArgs Аргументы
|
|
|
|
|
* @return mixed
|
|
|
|
|
*/
|
2009-05-09 20:04:04 +03:00
|
|
|
|
public function __call($sName,$aArgs) {
|
|
|
|
|
return Engine::getInstance()->_CallModule($sName,$aArgs);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
?>
|