Exemplo n.º 1
0
 /**
  * Сatch Exception
  *
  * @param exception $exception
  */
 public static function catchException(Exception $exception)
 {
     $params = '';
     // Получение текста ошибки
     $code = $exception->getCode();
     $file = $exception->getFile();
     $line = $exception->getLine() . "\n\n";
     $message = $exception->getMessage() . "\n\n";
     $trace = $exception->getTraceAsString() . "\n\n";
     //-----------------------
     // Получим строку ошибки
     $strMessage = 'EXCEPTION: ' . $code . '; FILE: ' . $file . '; LINE: ' . $line . 'MESSAGE: ' . $message;
     //Получим параметры запроса
     $front = Zend_Controller_Front::getInstance();
     if ($front) {
         $request = $front->getRequest();
         if ($request) {
             $params = var_export($request->getParams(), true);
         }
     }
     // Получим обьекты логеров
     $logMsg = Zend_Registry::get('Zend_Log');
     $logEx = Zend_Registry::get('Zend_LogEx');
     // Запомним ошибку в лог файле - Messages.log
     $logMsg->emerg($strMessage);
     $strMessage .= $trace . 'PARAMS: ' . $params;
     // Запомним ошибку в лог файле - Exceptions.log
     $logEx->emerg($strMessage);
     // Очистим кеш, что бы ошибка не запомнилась
     $pageCache = Default_Plugin_SysBox::getCache('page');
     $pageCache->clean(Zend_Cache::CLEANING_MODE_ALL);
     $dbCache = Default_Plugin_SysBox::getCache('db');
     $dbCache->clean(Zend_Cache::CLEANING_MODE_ALL);
     //Получим переменную окружения - (production, testing, development)
     $env = APPLICATION_ENV;
     // Если включен режим отладки отображаем сообщение о ошибке на экран
     echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
             <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
             <head>
                 <title>This site is in Maintenance</title>
                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
             </head>
             <body>
                     <h1>Application Error</h1>';
     if ($env == 'development') {
         Zend_Debug::dump($strMessage);
     } else {
         // Иначе выводим сообщение об ошибке
         echo '<h2>System error! Please try again later.</h2>';
         echo 'EXCEPTION: ' . $code . '; MESSAGE: ' . $message;
     }
     echo '</body></html>';
     exit;
 }
Exemplo n.º 2
0
 /**
  * Get sorted and grouped values from table column
  *
  * @param Zend_Db_Adapter_Abstract $db
  * @param array $options
  * @return array
  */
 public static function GetValuesForCol($db, $options)
 {
     $arrValues = FALSE;
     //----------------------
     // инициализация параметров
     $defaults = array('offset' => 0, 'limit' => 0, 'group' => TRUE, 'order' => 'p.ts_created');
     foreach ($defaults as $k => $v) {
         $options[$k] = array_key_exists($k, $options) ? $options[$k] : $v;
     }
     $select = self::_GetBaseQuery($db, $options);
     // set the offset, limit, and ordering of results
     if ($options['limit'] > 0) {
         $select->limit($options['limit'], $options['offset']);
     }
     // Установим параметры сортировки для таблицы
     $select = self::GetSelectForSort($select, $options);
     // Добавим группировку и соответствующую колонку
     $aliasTable = Default_Model_DatabaseObject::getAliasForTable($select, $options['joinTableForSort']);
     if ($aliasTable) {
         $orderData = $select->getPart(Zend_Db_Select::ORDER);
         if ($options['group']) {
             $select->group($orderData[0][0]);
         }
         // Найдем алиас таблицы, запрашиваемого поля
         $arrAliasTable = explode('_', $aliasTable);
         $select->columns(array($arrAliasTable[0] . '.id', $orderData[0][0]));
     } else {
         if ($options['group']) {
             $select->group('p.' . $options['field']);
         }
         $select->columns(array('p.id', 'p.' . $options['field']));
     }
     $strSelect = $select->__toString();
     //------ Применить кеширование -------
     $dbCache = Default_Plugin_SysBox::getCache('db');
     if ($dbCache->getOption('caching')) {
         // Получим TAG для кеширования
         $arrItems = array($select, $options);
         $strSerialize = serialize($arrItems);
         $tagCache = md5($strSerialize);
         // Очистим кеш
         if (Default_Plugin_SysBox::isCleanCache()) {
             $dbCache->clean(Zend_Cache::CLEANING_MODE_ALL);
         }
         // Получим данные из кеша по тегу $tagCache
         $arrValues = $dbCache->load($tagCache);
     }
     // проверка, есть ли уже данные в кэше:
     if ($arrValues === FALSE) {
         $arrValues = $db->fetchPairs($select);
         // Если разрешено кеширование, то сохраним данные в кеше
         if ($dbCache->getOption('caching')) {
             $dbCache->save($arrValues, $tagCache);
         }
     } else {
         $result = $arrValues;
     }
     return $arrValues;
 }
Exemplo n.º 3
0
 /**
  * Action - clearcache
  * clear cache
  *
  * Access to the action is possible in the following paths:
  * - /admin/tools/clearcache
  *
  * @return void
  */
 public function clearcacheAction()
 {
     $json = array();
     //------------------
     $dbCache = Default_Plugin_SysBox::getCache('db');
     $paginatorCache = Default_Plugin_SysBox::getCache('paginator');
     $pageCache = Default_Plugin_SysBox::getCache('page');
     if ($dbCache) {
         $dbCache->clean(Zend_Cache::CLEANING_MODE_ALL);
     }
     if ($paginatorCache) {
         $paginatorCache->clean(Zend_Cache::CLEANING_MODE_ALL);
     }
     if ($pageCache) {
         $pageCache->clean(Zend_Cache::CLEANING_MODE_ALL);
     }
     if ($this->_isAjaxRequest) {
         $json = array('class_message' => 'information', 'messages' => array('<em>' . $this->Translate("Очистить кеш") . '!</em>', $this->Translate("Кеш очищен") . '.'));
         $this->sendJson($json);
     } else {
         $this->view->class_message = 'information';
         $message = array('<em>' . $this->Translate("Очистить кеш") . '!</em>', $this->Translate("Кеш очищен") . '.');
         $this->view->message = $message;
     }
     $this->_breadcrumbs->addStep($this->Translate('Очистить кеш'));
 }