Example #1
0
 /**
  * Factory class to create instance of HookContainer class defined in MetaData::capabilities.
  * @param MetaData $metaData
  * @param null $requestedHookType
  * @return null|\Zikula\Component\HookDispatcher\AbstractContainer
  */
 public function getHookContainerInstance(MetaData $metaData, $requestedHookType = null)
 {
     foreach ([self::SUBSCRIBER_TYPE, self::PROVIDER_TYPE] as $type) {
         if (isset($metaData->getCapabilities()[$type]['class']) && (!isset($requestedHookType) || $type == $requestedHookType)) {
             $hookContainerClassName = $metaData->getCapabilities()[$type]['class'];
             $reflection = new \ReflectionClass($hookContainerClassName);
             if ($reflection->isSubclassOf('Zikula\\Component\\HookDispatcher\\AbstractContainer')) {
                 return new $hookContainerClassName($this->translator);
             }
         }
     }
     return null;
 }