Esempio n. 1
0
 /**
  * Запускает все виджеты, привязанные к текущей странице
  */
 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);
         }
     }
 }
Esempio n. 2
0
 /**
  * Обновляет кеш списка привязки слушателей к событиям
  * @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;
 }