/** * Предиспетчер * * @return void */ public function preDispatch() { /** * Инициализируем класс материалов сайта и определяем текущий модуль */ $this->Resource = new Phorm_Resource(null); if (isset($this->_params['moduleid'])) { $this->Resource->setModuleid($this->_params['moduleid']); } if (isset($this->_params['resourceid']) && ($this->ResourceInfo = $this->Resource->getResourceInfo($this->_params['resourceid']))) { $this->Resource->setModuleid($this->ResourceInfo['moduleid']); } /** * Проверяем существование MVC-ресурса (проще всего это сделать через ACl-таблицу пользователя) * Если запись есть, то делаем перенаправление на соответствующий Action */ if (isset($this->_usersession->UserData['acl']['mvc']['control'][$this->Resource->getModuleid()][$this->_params['action']])) { return $this->_forward($this->_params['action'], $this->Resource->getModuleid(), null, array('controller' => $this->Resource->getModuleid(), 'action' => $this->_params['action'], 'isfwd' => true)); /** * В противном случае работаем с текущим контроллером */ } else { if ($this->ModuleInfo = $this->Resource->getModuleInfo($this->Resource->getModuleid())) { $this->view->assign('ModuleInfo', $this->ModuleInfo); } elseif (!in_array($this->_params['action'], array('index', 'generate'))) { return $this->composeErrorMessage('Материал с указанным Id не найден'); } } }