From 22874a3b8e8fb3564bdb72a4610ff9f67a312ab4 Mon Sep 17 00:00:00 2001 From: Mzhelskiy Maxim Date: Sat, 21 Aug 2010 07:26:37 +0000 Subject: [PATCH] fix Hook run --- engine/modules/hook/Hook.class.php | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/engine/modules/hook/Hook.class.php b/engine/modules/hook/Hook.class.php index 544f3d00..0e0f36ed 100644 --- a/engine/modules/hook/Hook.class.php +++ b/engine/modules/hook/Hook.class.php @@ -34,7 +34,12 @@ class ModuleHook extends Module { * ) */ protected $aHooks=array(); - + /** + * Hook objects + * + * @var unknown_type + */ + protected $aHooksObject=array(); /** * Инициализация модуля * @@ -139,8 +144,14 @@ class ModuleHook extends Module { $result=call_user_func_array($aHook['callback'],array(&$aVars)); break; case 'hook': - if (isset($aHook['params']['sClassName']) and class_exists($aHook['params']['sClassName'])) { - $oHook=new $aHook['params']['sClassName']; + $sHookClass=isset($aHook['params']['sClassName']) ? $aHook['params']['sClassName'] : null; + if ($sHookClass and class_exists($sHookClass)) { + if (isset($this->aHooksObject[$sHookClass])) { + $oHook=$this->aHooksObject[$sHookClass]; + } else { + $oHook=new $sHookClass; + $this->aHooksObject[$sHookClass]=$oHook; + } $result=call_user_func_array(array($oHook,$aHook['callback']),array(&$aVars)); } break;