ifhub2/framework/classes/engine/Hook.class.php

87 lines
4.2 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
* LiveStreet CMS
* Copyright © 2013 OOO "ЛС-СОФТ"
*
* ------------------------------------------------------
*
* Official site: www.livestreetcms.com
* Contact e-mail: office@livestreetcms.com
*
* GNU General Public License, version 2:
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
*
* ------------------------------------------------------
*
* @link http://www.livestreetcms.com
* @copyright 2013 OOO "ЛС-СОФТ"
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
*
*/
/**
* Абстракция хука, от которой наследуются все хуки
* Дает возможность создавать обработчики хуков в каталоге /hooks/
*
* @package framework.engine
* @since 1.0
*/
abstract class Hook extends LsObject
{
/**
* Добавляет обработчик на хук
* @see ModuleHook::AddExecHook
*
* @param string $sName Название хука на который вешается обработчик
* @param string $sCallBack Название метода обработчика
* @param null|string $sClassNameHook Название класса обработчика, по умолчанию это текущий класс хука
* @param int $iPriority Приоритет обработчика хука, чем выше число, тем больше приоритет - хук обработчик выполнится раньше остальных
*/
protected function AddHook($sName, $sCallBack, $sClassNameHook = null, $iPriority = 1)
{
if (is_null($sClassNameHook)) {
$sClassNameHook = get_class($this);
}
$this->Hook_AddExecHook($sName, $sCallBack, $iPriority, array('sClassName' => $sClassNameHook));
}
/**
* Добавляет делегирующий обработчик на хук. Актуален для хуков на выполнение методов модулей.
* После него другие обработчики не выполняются, а результат метода модуля заменяется на результат обработчика.
*
* @param $sName Название хука на который вешается обработчик
* @param $sCallBack Название метода обработчика
* @param null $sClassNameHook Название класса обработчика, по умолчанию это текущий класс хука
* @param int $iPriority Приоритет обработчика хука
*/
protected function AddDelegateHook($sName, $sCallBack, $sClassNameHook = null, $iPriority = 1)
{
if (is_null($sClassNameHook)) {
$sClassNameHook = get_class($this);
}
$this->Hook_AddDelegateHook($sName, $sCallBack, $iPriority, array('sClassName' => $sClassNameHook));
}
/**
* Добавляет обработчик на хук по регулярному выражению
*
* @param string $sName Название хука на который вешается обработчик
* @param string $sCallBack Название метода обработчика
* @param null|string $sClassNameHook Название класса обработчика, по умолчанию это текущий класс хука
* @param int $iPriority Приоритет обработчика хука, чем выше число, тем больше приоритет - хук обработчик выполнится раньше остальных
*/
protected function AddHookPreg($sName, $sCallBack, $sClassNameHook = null, $iPriority = 1)
{
if (is_null($sClassNameHook)) {
$sClassNameHook = get_class($this);
}
$this->Hook_AddExecHook($sName, $sCallBack, $iPriority, array('sClassName' => $sClassNameHook), true);
}
/**
* Обязательный метод в хуке - в нем происходит регистрация обработчиков хуков
*
* @abstract
*/
abstract public function RegisterHook();
}