/** * Events after the controller dispatching */ public function postDispatch() { $infoProfiler = ''; //------------------------- $request = $this->getRequest(); if ($this->_breadcrumbs) { $this->view->breadcrumbs = $this->_breadcrumbs; $this->view->title = $this->_breadcrumbs->getTitle(); } //Передадим признак Ajax запроса $this->view->isAjaxRequest = $this->_isAjaxRequest; //Передадим сообщения в шаблоны $this->view->messages = $this->_flashMessenger->getMessages(); // Запомним время выполения цикла диспетчеризации $params = $request->getParams(); foreach ($params as $key => $value) { if (!is_string($value)) { continue; } if ($infoProfiler) { $infoProfiler .= "{$key} = {$value}<br>"; } else { $infoProfiler .= $this->Translate("Время выполнения запроса") . ":<br />{$key} = {$value}<br />"; } } $infoProfiler .= "<br />" . $this->Translate("Равно") . " = "; Default_Plugin_SysBox::profilerTime2Registry($this->_startTimeDispatch, $infoProfiler); }
/** * Event before accessing the controller will check the availability to the user's resources * * @param Zend_Controller_Request_Abstract $request */ public function preDispatch(Zend_Controller_Request_Abstract $request) { $startTime = microtime(1); //Определим роль пользователя // Если это зарегистрированный пользователь, назначим его роль. // Если нет, то назначим роль по умолчанию if ($this->auth->hasIdentity()) { $identity = $this->auth->getIdentity(); $role = $identity->user_type; } else { $role = $this->_defaultRole; } //Проверим правильность назначенной роли if (!$this->acl->hasRole($role)) { $role = $this->_defaultRole; } // Получим название ресурса (имя контроллера) if ($request->getModuleName()) { $module = $request->getModuleName(); } else { $module = $this->_defaultModule; } $resource = $module . '.' . $request->getControllerName(); // Получим название привилегии (имя действия контроллера) $privilege = $request->getActionName(); // Если полученный ресурс не назначен в "ACL", // то установим его в NULL if (!$this->acl->has($resource)) { $resource = null; } // Проверим доспупность ресурса, запрашиваемого пользователем // если, доступ запрещен, то перенаправим запрос на // соответствующий обработчик ошибки доспупа к ресурсу if (!$this->acl->isAllowed($role, $resource, $privilege)) { $arrMessage = array(); if ($role == $this->_defaultRole) { $request->setModuleName($this->_authController['module']); $request->setControllerName($this->_authController['controller']); $request->setActionName($this->_authController['action']); $arrMessage[] = '<em>' . Zend_Registry::get('Zend_Translate')->_('Ошибка авторизации') . '!</em>'; $arrMessage[] = Zend_Registry::get('Zend_Translate')->_('У вас недостаточно прав на этот ресурс') . '. ' . Zend_Registry::get('Zend_Translate')->_('Пожалуйста авторизируйтесь') . '!'; $request->setParam('message', $arrMessage); $request->setParam('class_message', 'warning'); $this->iniViewSmarty('default'); } else { $request->setModuleName($this->_errorController['module']); $request->setControllerName($this->_errorController['controller']); $request->setActionName($this->_errorController['action']); $arrMessage[] = '<em>' . Zend_Registry::get('Zend_Translate')->_('Ошибка доступа к ресурсу') . '!</em>'; $arrMessage[] = Zend_Registry::get('Zend_Translate')->_('У вас недостаточно прав на этот ресурс') . '. '; $request->setParam('message', $arrMessage); $request->setParam('class_message', 'warning'); $this->iniViewSmarty('default'); } } else { $this->iniViewSmarty($module); } //-------- Установим время выполнения проверки доступа к ресурсу -------- $infoProfiler = ""; $infoProfiler .= "Время выполнения проверки доступа к ресурсу: "; Default_Plugin_SysBox::profilerTime2Registry($startTime, $infoProfiler); }
/** * Initialization Log, Search, KCFinder * * @return void */ protected function _initLog() { $params = array(); //------------------ $_startTime = microtime(1); //Получим конфигурацию $config = $this->_options; //----- Create Zend_Log object ----- $columnMapping = array('ts' => 'timestamp', 'msg' => 'message', 'pr' => 'priority', 'pr_name' => 'priorityName'); $countMsg = $config['logging']['log']['max_rows']; $countEx = $config['logging']['exeption']['max_rows']; $countStat = $config['logging']['statistics']['max_rows']; // Get DB $db = Zend_Registry::get('db'); // Set params $params['db'] = $db; $params['columnMap'] = $columnMapping; // Create writer for DB $params['table'] = 'log_msg'; $params['max_rows'] = $countMsg; $writerMsg = new Default_Model_Log($params); $params['table'] = 'log_error'; $params['max_rows'] = $countEx; $writerEx = new Default_Model_Log($params); $params['table'] = 'log_stat'; $params['max_rows'] = $countStat; $writerStat = new Default_Model_Log($params); // Create logers $logMsg = new Zend_Log($writerMsg); $logEx = new Zend_Log($writerEx); $logStat = new Zend_Log($writerStat); // Adding new priorities for the $logMsg $logMsg->addPriority('LOGIN_OK', 8); $logMsg->addPriority('LOGIN_ERR', 9); $logMsg->addPriority('LOGOUT', 10); $logMsg->addPriority('REG_OK', 11); $logMsg->addPriority('REG_ERR', 12); $logMsg->addPriority('DETAILS_OK', 13); $logMsg->addPriority('FETCHPASS_COMPLETE_OK', 14); $logMsg->addPriority('FETCHPASS_COMPLETE_ERR', 15); $logMsg->addPriority('FETCHPASS_CONFIRM_OK', 16); $logMsg->addPriority('FETCHPASS_CONFIRM_ERR', 17); $logMsg->addPriority('MAIL_OK', 18); $logMsg->addPriority('MAIL_ERR', 19); $logMsg->addPriority('DB_SAVE_ERR', 20); $logMsg->addPriority('DB_DELETE_ERR', 21); $logMsg->addPriority('POST_EDIT', 22); $logMsg->addPriority('POST_SET_STATUS', 23); $logMsg->addPriority('ADMIN_POST_EDIT', 24); $logMsg->addPriority('ADMIN_ROW_UPDATE', 25); $logMsg->addPriority('ADMIN_ROW_INSERT', 26); $logMsg->addPriority('ADMIN_ROW_DELETE', 27); $logMsg->addPriority('MY_MSG', 28); // Adding new priorities for the $logStat $logStat->addPriority('LOGIN_OK', 8); $logStat->addPriority('LOGIN_ERR', 9); $logStat->addPriority('MAIL_OK', 10); $logStat->addPriority('FETCHPASS_COMPLETE_OK', 11); $logStat->addPriority('FETCHPASS_COMPLETE_ERR', 12); $logStat->addPriority('FETCHPASS_CONFIRM_OK', 13); $logStat->addPriority('FETCHPASS_CONFIRM_ERR', 14); $logStat->addPriority('POST_OPEN', 15); $logStat->addPriority('VIDEO_PLAY', 16); $logStat->addPriority('AUDIO_PLAY', 17); $emailParams = $config['logging']['email']; if ($emailParams['send']) { $mail = Default_Plugin_SysBox::createMail($emailParams); $writer = new Zend_Log_Writer_Mail($mail); $my_request = Default_Plugin_SysBox::getUrlRequest(); if (!$emailParams['subject']) { $writer->setSubjectPrependText('Errors request - ' . $my_request); } $writer->addFilter(Zend_Log::EMERG); $writer->addFilter(Zend_Log::ALERT); $writer->addFilter(Zend_Log::CRIT); $writer->addFilter(Zend_Log::ERR); $logger->addWriter($writer); } // Save to Registry Zend_Registry::set("Zend_Log", $logMsg); Zend_Registry::set("Zend_LogEx", $logEx); Zend_Registry::set("Zend_LogStat", $logStat); // Remember in the session array of search results $Zend_Auth = Zend_Registry::get("Zend_Auth"); if (!$Zend_Auth->search) { $Zend_Auth->search = array(); } //------------ Configure default search ------------- // Establish a query analyzer in the coding Utf8 Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive()); //------ Initialization file manager ------------- Default_Plugin_SysBox::iniKCFinder(); //---- Defining script execution time ---- $infoProfiler = Default_Plugin_SysBox::Translate("Время выполнения") . " Bootstrap_initLog(): "; Default_Plugin_SysBox::profilerTime2Registry($_startTime, $infoProfiler); }