public function registerHooks() { $moduleHooks = $this->getHooks(); if (is_array($moduleHooks) && !empty($moduleHooks)) { $allowedTypes = (array) TemplateDefinition::getStandardTemplatesSubdirsIterator(); $defaultLang = Lang::getDefaultLanguage(); $defaultLocale = $defaultLang->getLocale(); $dispatcher = $this->container->get("event_dispatcher"); foreach ($moduleHooks as $hook) { $isValid = is_array($hook) && isset($hook["type"]) && array_key_exists($hook["type"], $allowedTypes) && isset($hook["code"]) && is_string($hook["code"]) && !empty($hook["code"]); if (!$isValid) { Tlog::getInstance()->notice("The module " . $this->getCode() . " tried to register an invalid hook"); continue; } /** * Create or update hook db entry. */ list($hookModel, $updateData) = $this->createOrUpdateHook($hook, $dispatcher, $defaultLocale); /** * Update translations */ $event = new HookUpdateEvent($hookModel->getId()); foreach ($updateData as $locale => $data) { $event->setCode($hookModel->getCode())->setNative($hookModel->getNative())->setByModule($hookModel->getByModule())->setActive($hookModel->getActivate())->setBlock($hookModel->getBlock())->setNative($hookModel->getNative())->setType($hookModel->getType())->setLocale($locale)->setChapo($data["chapo"])->setTitle($data["title"])->setDescription($data["description"]); $dispatcher->dispatch(TheliaEvents::HOOK_UPDATE, $event); } } } }
/** * @param HookModel $hook * @depends testToggleActivation * @return HookModel */ public function testUpdate(HookModel $hook) { $event = new HookUpdateEvent($hook->getId()); $event->setCode('test.hook.' . uniqid())->setType(TemplateDefinition::FRONT_OFFICE)->setLocale($this->locale)->setActive(false)->setNative(false)->setTitle("Updated Hook Test")->setDescription("Updated Hook Description")->setChapo("Updated Hook Chapo")->setBlock(false)->setByModule(false); $this->action->update($event, null, $this->getMockEventDispatcher()); $updatedHook = $event->getHook(); $this->assertEquals($event->getCode(), $updatedHook->getCode()); $this->assertEquals($event->getType(), $updatedHook->getType()); $this->assertEquals($event->getLocale(), $updatedHook->getLocale()); $this->assertEquals($event->getActive(), $updatedHook->getActivate()); $this->assertEquals($event->getNative(), $updatedHook->getNative()); $this->assertEquals($event->getTitle(), $updatedHook->getTitle()); $this->assertEquals($event->getDescription(), $updatedHook->getDescription()); $this->assertEquals($event->getChapo(), $updatedHook->getChapo()); $this->assertEquals($event->getBlock(), $updatedHook->getBlock()); $this->assertEquals($event->getByModule(), $updatedHook->getByModule()); return $updatedHook; }