private static function _getSubscribersFromComponent($componentClass) { $subscribers = array(); $eventsClass = Kwc_Admin::getComponentClass($componentClass, 'Events'); $subscribers[] = Kwf_Component_Abstract_Events::getInstance($eventsClass, array('componentClass' => $componentClass)); foreach (Kwc_Abstract::getSetting($componentClass, 'generators') as $generatorKey => $null) { $generator = current(Kwf_Component_Generator_Abstract::getInstances($componentClass, array('generator' => $generatorKey))); $eventsClass = $generator->getEventsClass(); if ($eventsClass) { $subscribers[] = Kwf_Component_Generator_Events::getInstance($eventsClass, array('componentClass' => $componentClass, 'generatorKey' => $generatorKey)); } } if (Kwc_Abstract::hasSetting($componentClass, 'menuConfig')) { $mc = Kwf_Component_Abstract_MenuConfig_Abstract::getInstance($componentClass); $eventsClass = $mc->getEventsClass(); if ($eventsClass) { $subscribers[] = Kwf_Component_Abstract_MenuConfig_Events::getInstance($eventsClass, array('componentClass' => $componentClass)); } } return $subscribers; }
/** * Lädt Resourcen die von Komponenten kommen. * Muss extra aufgerufen werden wenn diese Resourcen benötigt werden, aus * performance gründen */ public function loadKwcResources() { if (!Kwf_Registry::get('db')) { return; } //if we don't have a db configured yet skip kwc resources. required to be able to build assets without db if ($this->_kwcResourcesLoaded) { return; } $this->_kwcResourcesLoaded = true; $t = microtime(true); $menuConfigs = array(); foreach (Kwc_Abstract::getComponentClasses() as $c) { if (Kwc_Abstract::getFlag($c, 'hasResources')) { Kwc_Admin::getInstance($c)->addResources($this); } if (Kwc_Abstract::hasSetting($c, 'menuConfig') && Kwc_Abstract::getSetting($c, 'menuConfig')) { $menuConfigs[] = Kwf_Component_Abstract_MenuConfig_Abstract::getInstance($c); } } usort($menuConfigs, array(get_class($this), '_compareMenuConfig')); foreach ($menuConfigs as $cfg) { $cfg->addResources($this); } Kwf_Benchmark::subCheckpoint('kwc resources', microtime(true) - $t); }