/** * Запускает все виджеты, привязанные к текущей странице */ public function runWidgets() { // в админке нам виджеты не нужны if ($this->controller == 'admin') { return; } $widgets_model = cmsCore::getModel('widgets'); $pages = $widgets_model->getPages(); $matched_pages = $this->detectMatchedWidgetPages($pages); if (!is_array($matched_pages)) { return; } if (sizeof($matched_pages) == 0) { return; } $widgets_list = $widgets_model->getWidgetsForPages($matched_pages, cmsTemplate::getInstance()->getName()); if (is_array($widgets_list)) { foreach ($widgets_list as $widget) { if (!empty($widget['controller']) && !cmsController::enabled($widget['controller'])) { continue; } $this->runWidget($widget); } } }
/** * Обновляет кеш списка привязки слушателей к событиям * @return boolean */ public static function getAllListeners() { $cache = cmsCache::getInstance(); $cache_key = 'events'; if (false !== ($structure = $cache->get($cache_key))) { return $structure; } $manifests = cmsCore::getControllersManifests(); if (!$manifests) { return false; } $structure = array(); foreach ($manifests as $controller_name => $manifest) { if (!isset($manifest['hooks'])) { continue; } if (!is_array($manifest['hooks'])) { continue; } if (!cmsController::enabled($controller_name)) { continue; } foreach ($manifest['hooks'] as $event_name) { $structure[$event_name][] = $controller_name; } } $cache->set($cache_key, $structure, 86400); return $structure; }