Example #1
0
 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);
             }
         }
     }
 }
Example #2
0
 /**
  * @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;
 }