38 $this->context = $context;
39 $this->currentHook = array();
40 $this->hooks = array();
50 public function register($module, $hookName)
52 if (!\
Tools\ModuleManager::isInstalling())
53 throw new \
Exception(
"You can only register hooks while installing");
54 if (!isset($this->hooks[$hookName]))
55 $this->hooks[$hookName] = array();
56 $this->hooks[$hookName][] = $module->entity->id;
57 $moduleHook = new \Entity\ModuleHook();
58 $moduleHook->module_id = $module->entity->id;
59 $moduleHook->hookName = $hookName;
60 $moduleHook->hookPosition = 10;
70 public function trigger($hookName, $params =null)
72 if (empty($this->hooks[$hookName]))
74 $hookEvent =
new HookEvent($hookName, $this->context, $params);
75 array_push($this->currentHook, $hookEvent);
77 foreach ($this->hooks[$hookName] as $module_id)
79 $module = $this->context->moduleManager->getModuleFromId($module_id);
82 $module->doAction($hookEvent);
85 array_pop($this->currentHook);
96 foreach ($this->currentHook as $i)
97 if ($i->hookName == $hookName)
108 $this->hooks = array();
109 foreach ($hookEntities as $i)
110 $this->hooks[$i->hookName][] = (int) $i->module_id;
120 case "currentHook":
return end($this->currentHook);
122 throw new \Exception(
"Cannot access attribute {$key}");