コード例 #1
0
ファイル: Router.php プロジェクト: vgrish/dvelum
 protected function _routeModule()
 {
     $vers = Request::get('vers', 'int', false);
     $showRevision = false;
     $pageCode = $this->_request->getPart(0);
     if (!strlen($pageCode)) {
         $pageCode = 'index';
     }
     $pageData = Model::factory('Page')->getCachedItemByField('code', $pageCode);
     if (empty($pageData)) {
         Response::redirect('/');
     }
     $cacheManager = new Cache_Manager();
     $cache = $cacheManager->get('data');
     $blockManager = false;
     if ($vers) {
         $user = User::getInstance();
         if ($user->isAuthorized() && $user->isAdmin()) {
             $pageData = array_merge($pageData, Model::factory('Vc')->getData('page', $pageData['id'], $vers));
             $showRevision = true;
         } else {
             $vers = false;
         }
     }
     if (!$vers && $cache) {
         Blockmanager::setDefaultCache($cache);
     }
     if ($pageData['published'] == false && !$showRevision) {
         Response::redirect('/');
     }
     $page = Page::getInstance();
     foreach ($pageData as $k => $v) {
         $page->{$k} = $v;
     }
     /**
      * Check if controller attached
      */
     if (strlen($page->func_code)) {
         $fModules = Config::factory(Config::File_Array, $this->_appConfig->get('frontend_modules'));
         if ($fModules->offsetExists($page->func_code)) {
             $controllerConfig = $fModules->get($page->func_code);
             $this->runController($controllerConfig['class'], $this->_request->getPart(1));
         }
     }
     if (!$vers && $cache) {
         Blockmanager::setDefaultCache($cache);
     }
     $blockManager = new Blockmanager();
     if ($page->show_blocks) {
         $blockManager->init($page->id, $page->default_blocks, $vers);
     }
     $this->showPage($page, $blockManager);
 }