Example #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;
 }
Example #2
0
/**
 * Get the URL for the resource
 * 
 * @param string $url_res
 * @param string $type
 * @return string 
 */
function smarty_modifier_urlres($url_res, $type = 'normalize')
{
    $responseTime = 0;
    $result = '';
    //-----------------
    if ($type == 'normalize') {
        $url = Default_Plugin_SysBox::getUrlRes($url_res);
        $result = $url;
    } elseif ($type == 'check') {
        $urlTool = new Default_Plugin_UrlTool();
        $result = $urlTool->checkUrl($url_res, $responseTime);
    } else {
        $result = $url_res;
    }
    return $result;
}
Example #3
0
function smarty_function_wysiwyg($params = array(), $smarty)
{
    $name = 'ckeditor_content';
    $content = '';
    $defaults = array();
    //--------------------------
    //------ инициализация опций ----------
    // Установим инструментальную панель
    $defaults['type_toolbar'] = 'medium';
    // Установим парметры подключения файлового менеджера
    $defaults['filebrowserBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=files');
    $defaults['filebrowserImageBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=images');
    $defaults['filebrowserFlashBrowseUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/browse.php?type=flash');
    $defaults['filebrowserUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=files');
    $defaults['filebrowserImageUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=images');
    $defaults['filebrowserFlashUploadUrl'] = Default_Plugin_SysBox::getUrlRes('/js/kcfinder/upload.php?type=flash');
    // Установим язык интерфейса
    $defaults['language'] = Default_Plugin_SysBox::getTranslateLocale();
    // Установим высоту окна редактора
    $defaults['height'] = 300;
    foreach ($defaults as $k => $v) {
        $params[$k] = array_key_exists($k, $params) ? $params[$k] : $v;
    }
    $params['toolbar'] = getToolbar($params['type_toolbar']);
    if (isset($params['name'])) {
        $name = $params['name'];
    }
    if (isset($params['content'])) {
        $content = $params['content'];
    }
    $basePath = Default_Plugin_SysBox::getUrlRes('/js/ckeditor/') . '/';
    //------------- создание редактора --------------
    // При создании редактоа он скрывает textarea
    // но создает новый конпонент textarea с атрибутами в свойстве - textareaAttributes
    $ckeditor = new Default_Plugin_CkEditor($basePath);
    // Скроем вновь созданный элемент textarea
    $ckeditor->textareaAttributes = array("style" => "visibility: hidden; display: none;");
    $ckeditor->editor($name, $content, $params);
}
Example #4
0
 /**
  * add the base path to the URL of HTML Resources
  *
  * @param string $html
  * @return string
  */
 protected function addBasePathUrl($html)
 {
     //$domHtml
     $str_begin = '<?xml version="1.0" encoding="utf-8"?>' . "\n" . '<body>';
     $str_end = '</body>';
     //---------------------------
     $html = str_replace('&nbsp;', '&#160;', $html);
     $html = $str_begin . $html . $str_end;
     // Check for correct XML
     $domDoc = new DOMDocument('1.0', 'utf-8');
     $success = $domDoc->loadXML($html);
     if (!$success) {
         return FALSE;
     }
     $domQuery = new Zend_Dom_Query();
     $domQuery->setDocumentXml($html, "utf-8");
     foreach (self::$tags as $tag => $attr) {
         $results = $domQuery->query($tag);
         if ($results->count()) {
             foreach ($results as $result) {
                 // $result variable is of DOMElement type
                 if ($result->hasAttribute($attr)) {
                     $value = $result->getAttribute($attr);
                     $st = new Default_Plugin_String($value);
                     if ($st->beginsWith('/')) {
                         $baseURL = Default_Plugin_SysBox::getUrlRes($value);
                         $result->setAttribute($attr, $baseURL);
                     }
                 }
             }
             $domDoc = $results->getDocument();
             $html = $domDoc->saveXml();
             $domQuery->setDocumentXml($html, "utf-8");
         }
     }
     $html = str_replace($str_begin, '', $html);
     $html = str_replace($str_end, '', $html);
     return $html;
 }
Example #5
0
 /**
  * Getting the code reference and the calendar image. Configure calendar.
  *
  * @return string
  */
 private function _getCalendarLink()
 {
     $request = new Zend_Controller_Request_Http();
     $basePath = $request->getBasePath();
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $dateFormat = $locale == 'en' ? '%m.%d.%Y' : '%d.%m.%Y';
     //--------------------------
     $calendarLink = '
         <a href="#" id="' . $this->getElement()->getName() . '_calendar">' . '<img class="calendar-image" src = "' . Default_Plugin_SysBox::getUrlRes('/js/calendar/calendar.gif') . '">
         </a>
 
         <script type="text/javascript">
             Calendar.setup(
               {
                 inputField  : "' . $this->getElement()->getName() . '",
                 ifFormat    : "' . $dateFormat . '",
                 button      : "' . $this->getElement()->getName() . '_calendar",
                 firstDay    : 1
               }
             );
         </script>
     ';
     return $calendarLink;
 }
Example #6
0
    $application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini');
    //Запомним время выполнения (index.php + new Zend_Application)
    $_startTime2 = microtime(1);
    $totalTime_StartApplication = $_startTime2 - $_startTime;
    // Obtain used memory at the beginning of the Application
    $memoryUsage_StartApplication = memory_get_usage();
    $memoryUsage_StartApplication = round($memoryUsage_StartApplication / 1024, 3);
    $memoryUsage_StartApplication = number_format($memoryUsage_StartApplication, 3, '.', ' ');
    // Perform bootstrap
    $application->bootstrap();
    //------------ An execution time Bootstrap -------------
    // Get total time of bootstrap
    $_startTime3 = microtime(1);
    $totalTime_Bootstrap = $_startTime3 - $_startTime2;
    // Get used memory after bootstrap
    $memoryUsage_Bootstrap = Default_Plugin_SysBox::showMemoryUsage('kb');
    // Save time performing different parts of the script in the register
    Zend_Registry::set("Duration_StartApplication", $totalTime_StartApplication);
    Zend_Registry::set("Duration_Bootstrap", $totalTime_Bootstrap);
    Zend_Registry::set("MemoryUsage_StartIndexPHP", $memoryUsage_StartIndexPHP);
    Zend_Registry::set("MemoryUsage_StartApplication", $memoryUsage_StartApplication);
    Zend_Registry::set("MemoryUsage_Bootstrap", $memoryUsage_Bootstrap);
    // Perform dispatch loop
    $application->run();
} catch (Zend_Exception $e) {
    // Intercept exceptions
    Default_Plugin_Error::catchException($e);
} catch (Exception $e) {
    // Intercept exceptions
    Default_Plugin_Error::catchException($e);
}
Example #7
0
 /**
  * Initialization form
  */
 public function init()
 {
     parent::init();
     //---------------- Форма ----------------
     // Указываем action формы
     $urlAction = $this->getUrl('register', 'account');
     $this->setAction($urlAction);
     // Указываем метод формы
     $this->setMethod('post');
     // Задаем атрибут class для формы
     //$this->setAttrib('class', 'register');
     $this->setAttrib('class', 'myfrm span5');
     $this->setAttrib('id', 'registration-form');
     //---------------- Username ----------------
     // Text элемент "Имя входа пользователя". Проверяется на алфавитные символы и цифры, а также на длину
     // Валидатор Alnum использует установленную локаль для определения алфавита символов.
     $username = new Zend_Form_Element_Text('username', array('required' => true, 'label' => $this->Translate('Имя входа пользователя') . ' (Login)', 'maxlength' => '30', 'validators' => array(array('Alnum', true, array(true)), array('UserName'), array('NoDbRecordExists', true, array('users', 'username'))), 'filters' => array('StringTrim')));
     $this->addElement($username);
     //---------------- Email ----------------
     // Используемый собственный элемент App_Form_Element_Email
     $email = new Default_Form_Element_Email('email', array('required' => true));
     // Добавление элемента в форму
     $this->addElement($email);
     //---------------- First name user ----------------
     // Text элемент "Имя пользователя". Проверяется на алфавитные символы и цифры, а также на длину
     // Валидатор Alnum использует установленную локаль для определения алфавита символов.
     $first_name = new Zend_Form_Element_Text('first_name', array('label' => 'Имя пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim')));
     $this->addElement($first_name);
     //---------------- Last name user ----------------
     // Text элемент "Фамилия пользователя". Проверяется на алфавитные символы и цифры, а также на длину
     // Валидатор Alnum использует установленную локаль для определения алфавита символов.
     $last_name = new Zend_Form_Element_Text('last_name', array('label' => 'Фамилия пользователя', 'maxlength' => '150', 'size' => '60', 'validators' => array(array('Alnum', true, array(true)), array('StringLength', true, array(0, 150))), 'filters' => array('StringTrim')));
     $this->addElement($last_name);
     //---------------- Captcha ----------------
     // Элемент CAPTCHA, защита от спама
     $urlBase = Default_Plugin_SysBox::getBaseURL();
     $captcha = new Zend_Form_Element_Captcha('captcha', array('label' => 'Введите символы', 'captcha' => array('captcha' => 'Image', 'wordLen' => 4, 'width' => 260, 'timeout' => 120, 'expiration' => 300, 'font' => APPLICATION_PUBLIC . '/fonts/arial.ttf', 'imgDir' => APPLICATION_PUBLIC . '/images/captcha/', 'imgUrl' => $urlBase . '/images/captcha/', 'gcFreq' => 5)));
     $this->addElement($captcha);
     //---------------- Submit ----------------
     // Кнопка Submit
     $submit = new Zend_Form_Element_Submit('send', array('label' => 'Зарегистрироваться'));
     $submit->setAttrib('class', 'btn btn-primary');
     // Перезаписываем декораторы, что-бы
     //перезаписать стандартный набор декораторов для кнопки 'submit'
     $submit->setDecorators(array('ViewHelper'));
     $this->addElement($submit);
     //---------------- Reset ----------------
     // Кнопка Reset, возвращает форму в начальное состояние
     $reset = new Zend_Form_Element_Reset('reset', array('label' => 'Очистить'));
     $reset->setAttrib('class', 'btn');
     // Перезаписываем декораторы, что-бы выставить две кнопки в ряд
     $reset->setDecorators(array('ViewHelper'));
     $this->addElement($reset);
     //---------------- Группа Авторизационные данные ----------------
     // Группируем элементы
     // Группа полей связанных с авторизационными данными
     $this->addDisplayGroup(array('username', 'email'), 'authDataGroup', array('legend' => 'Авторизационные данные'));
     //---------------- Группа Личная информация ----------------
     // Группа полей связанных с личной информацией
     $this->addDisplayGroup(array('first_name', 'last_name'), 'privateDataGroup', array('legend' => 'Личная информация'));
     //---------------- Группа Защита от спама ----------------
     // Защита от спама
     $this->addDisplayGroup(array('captcha'), 'captchaGroup', array('legend' => 'Защита от спама'));
     //---------------- Группа полей кнопок ----------------
     $this->addDisplayGroup(array('send', 'reset'), 'buttonsGroup');
 }
 /**
  * Action - report
  * display table data in a report in HTML or PDF format
  * 
  * Access to the action is possible in the following paths:
  * - /admin/user/report
  *
  * @return void
  */
 public function reportAction()
 {
     try {
         $params = $this->getRequest()->getParams();
         // Тип отчета
         $report_type = $params['type'];
         // Таблица для отчета
         $table = $params['table'];
         // Получим данные по отчету
         $reportData = $this->_getReportData($table);
         // Получим данные для отчета
         switch ($report_type) {
             case 'html':
                 $templater = Default_Plugin_SysBox::createViewSmarty();
                 // Отображается в режиме отчета
                 $templater->report = TRUE;
                 //------ Установим параметры и переменные HTML ------
                 // ---- Титл -----
                 $templater->title_name = $reportData['html']['title_report'];
                 $templater->title_logo = $reportData['html']['logo_report'];
                 // ---- Заголовок -----
                 $templater->column_model = $reportData['html']['column_model'];
                 $templater->is_group_head = isset($reportData['html']['is_group_head']) ? $reportData['html']['is_group_head'] : 0;
                 // ---- Нижний колонтитул -----
                 $templater->rows_footer = $reportData['html']['rows_footer'];
                 $templater->footer_colspan = $reportData['html']['footer_colspan'];
                 // ---- Тело таблицы -----
                 $templater->rows_body = $reportData['html']['rows_body'];
                 $templater->is_row_header = isset($reportData['html']['is_row_header']) ? $reportData['html']['is_row_header'] : 0;
                 // Получим результат шаблона
                 $html = $templater->render('reports/report-table.tpl');
                 $this->sendJson(array('result' => $this->Translate('Создан отчет в формате HTML'), 'html' => $html));
                 break;
             case 'pdf':
                 // Проверим наличие файла mpdf.php
                 // Если нет, то выдадим ошибку!
                 $path = APPLICATION_BASE . '/library/mPDF/mpdf.php';
                 if (!is_file($path)) {
                     throw new Exception($this->Translate('Не установлена библиотека mPDF', '/library/mPDF', 'http://www.mpdf1.com/mpdf/index.php?page=Download'));
                 }
                 // Создадим обьект шаблона
                 if ($this->_isAjaxRequest) {
                     $templater = Default_Plugin_SysBox::createViewSmarty();
                 } else {
                     $templater = $this->view;
                 }
                 //------ Установим параметры и переменные HTML ------
                 // ---- Титл -----
                 $templater->title_name = $reportData['html']['title_report'];
                 $templater->title_logo = $reportData['html']['logo_report'];
                 // ---- Заголовок -----
                 $templater->column_model = $reportData['html']['column_model'];
                 $templater->is_group_head = isset($reportData['html']['is_group_head']) ? $reportData['html']['is_group_head'] : 0;
                 // ---- Нижний колонтитул -----
                 $templater->rows_footer = $reportData['html']['rows_footer'];
                 $templater->footer_colspan = $reportData['html']['footer_colspan'];
                 // ---- Тело таблицы -----
                 $templater->rows_body = $reportData['html']['rows_body'];
                 $templater->is_row_header = isset($reportData['pdf']['is_row_header']) ? $reportData['pdf']['is_row_header'] : 0;
                 // Получим результат шаблона
                 $html = $templater->render('reports/table.tpl');
                 // Установим имя отчета PDF
                 // в названии файла будет присутствовать хеш полученного HTML
                 // это нужно для того, чтобы не создавать существующих файлов
                 $md5Html = md5($html);
                 $report = $table . '_' . $md5Html;
                 // Установим параметры для отчета PDF
                 $pdfParams['pdfReport'] = $report;
                 $pdfParams['html'] = $html;
                 $pdfParams['isCommonFont'] = FALSE;
                 $pdfParams['pathStylesheet'] = 'css/report/blue-style.css';
                 //phpinfo blue-style
                 $pdfParams['headerLeftMargin'] = $reportData['pdf']['title_report'];
                 $pdfParams['headerCentreMargin'] = $reportData['pdf']['logo_report'];
                 $pdfParams['pageFormat'] = $reportData['pdf']['pageFormat'];
                 ob_start();
                 // Получим имя файла и проверим его наличие
                 $filename = Default_Plugin_SysBox::getPath_For_FilePDF($report);
                 if (file_exists($filename)) {
                     // Файл уже существует
                     sleep(1);
                     // Получить URL PDF файла
                     $urlFilePDF = Default_Plugin_SysBox::getFullUrl_For_FilePDF($report);
                     $this->sendJson(array('result' => $this->Translate('Этот отчет уже существует'), 'url_file_pdf' => $urlFilePDF));
                 } else {
                     // Создадим отчет...
                     // Удалим ранее созданные отчеты
                     // Получим директорию с файлами отчетов
                     $patch_dir = Default_Plugin_SysBox::getPath_For_FilePDF('');
                     // Получим обьект построения дерева файлов
                     $ft = new Default_Plugin_FileTree($patch_dir);
                     // создадим дерево файлов
                     $report_del = $table . '_*.pdf';
                     $ft->readTree(array('name' => $report_del));
                     // удалим файлы и директории
                     $result = $ft->delFiles();
                     // Создать PDF файл из HTML
                     $urlFilePDF = Default_Plugin_SysBox::mpdfGenerator_Html2PDF($pdfParams);
                     $this->sendJson(array('result' => $this->Translate('Создан отчет в формате PDF'), 'url_file_pdf' => $urlFilePDF));
                 }
                 break;
             case 'exel':
                 break;
             default:
                 break;
         }
     } catch (Exception $exc) {
         $jsons = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка формирования отчета') . '</em>', Default_Plugin_SysBox::getMessageError($exc)));
         $this->sendJson($jsons);
     }
 }
Example #9
0
 /**
  * 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);
 }
Example #10
0
 /**
  * Action - fetchpassword
  * fetch new password
  * 
  * Access to the action is possible in the following paths:
  * - /account/fetchpassword
  *
  * @return void
  */
 public function fetchpasswordAction()
 {
     //----------------------
     // if a user's already logged in, send them to their account home page
     if (Zend_Auth::getInstance()->hasIdentity()) {
         $this->_redirect('/account');
     }
     // Определим полный адрес активации нового пароля
     $ActivateURL = Default_Plugin_SysBox::getFullURL(array('controller' => 'account', 'action' => 'fetchpassword'));
     //Создадим обьект формы
     $fetchpasswordForm = new Default_Form_FetchPassword();
     $action = $this->getRequest()->getQuery('action');
     if ($this->getRequest()->isPost()) {
         $action = 'submit';
     }
     switch ($action) {
         case 'submit':
             // Проверяем на валидность поля формы
             $params = $this->_getAllParams();
             $result = $fetchpasswordForm->isValid($params);
             if ($result) {
                 $username = trim($params['username']);
                 $user = new Default_Model_DbTable_User($this->db);
                 if ($user->load($username, 'username')) {
                     if ($user->fetchPassword()) {
                         // Запомним в логе сообщений
                         $message = "For user=\"{$username}\" created a new password, and sended to email";
                         $this->_logMsg->fetchpass_complete_ok($message);
                         // Запомним в логе статистики
                         $serialized = $this->_serializer->serialize(array('user' => $username));
                         $this->_logStat->fetchpass_complete_ok($serialized);
                         $url = '/account/fetchpassword?action=complete';
                         $this->_redirect($url);
                     } else {
                         // Запомним в логе сообщений
                         $message = "Error fetch the password for user=\"{$username}\"";
                         $this->_logMsg->fetchpass_complete_err($message);
                         // Запомним в логе статистики
                         $reason = "user->fetchPassword()->ERROR";
                         $serialized = $this->_serializer->serialize(array('user' => $username, 'reason' => $reason));
                         $this->_logStat->fetchpass_complete_err($serialized);
                     }
                 } else {
                     // Запомним в логе сообщений
                     $message = "User name - \"{$username}\" was not found";
                     $this->_logMsg->fetchpass_complete_err($message);
                     // Запомним в логе статистики
                     $serialized = $this->_serializer->serialize(array('user' => $username, 'reason' => $message));
                     $this->_logStat->fetchpass_complete_err($serialized);
                     //Выведем сообщение - что пользователь с таким именем не найден!
                     $this->view->class_message = 'warning';
                     $this->view->message = $this->Translate('Пользователь с таким именем не найден.');
                 }
             }
             break;
         case 'complete':
             //Выведем сообщение - что новый пароль пользователя был передан на e-mail!
             $this->view->class_message = 'message';
             $this->view->message = $this->Translate('Ваш новый пароль был передан на Emaile');
             break;
         case 'confirm':
             $id = $this->getRequest()->getQuery('id');
             $key = $this->getRequest()->getQuery('key');
             $user = new Default_Model_DbTable_User($this->db);
             if (!$user->load($id)) {
                 // Запомним в логе сообщений
                 $message = "User with this ID=\"{$id}\" is not found in the database";
                 $this->_logMsg->fetchpass_confirm_err($message);
                 $serialized = $this->_serializer->serialize(array('user_id' => $id, 'reason' => 'User is not found in the database'));
                 $this->_logStat->fetchpass_confirm_err($serialized);
                 //Выведем сообщение - что пользователь с таким ID не найден в базе данных
                 $this->view->class_message = 'warning';
                 $this->view->message = $this->Translate('Ошибка подтверждения нового пароля.');
                 break;
             } else {
                 if (!$user->confirmNewPassword($key)) {
                     // Запомним в логе сообщений
                     $message = "A user=\"{$user->username}\" has not been tested to confirm the password function";
                     $this->_logMsg->fetchpass_confirm_err($message);
                     $serialized = $this->_serializer->serialize(array('user' => $user->username, 'key' => $key, 'reason' => 'Error checking function to confirm the password'));
                     $this->_logStat->fetchpass_confirm_err($serialized);
                     //Выведем сообщение - что не прошла проверку ф-ия подтверждения пароля
                     $this->view->class_message = 'warning';
                     $this->view->message = $this->Translate('Ошибка подтверждения нового пароля.');
                     break;
                 }
             }
             // Запомним в логе сообщений
             $message = "User (\"{$user->username}\"), your new password has been successfully activated.";
             $this->_logMsg->fetchpass_confirm_ok($message);
             $serialized = $this->_serializer->serialize(array('user' => $user->username));
             $this->_logStat->fetchpass_confirm_ok($serialized);
             //Выведем сообщение - что новый парoль пользователя был успешно активирован
             $this->view->class_message = 'message';
             $this->view->message = $this->Translate('Ваш новый пароль был успешно активирован.');
             break;
     }
     $this->view->ActivateURL = $ActivateURL;
     $this->view->action = $action;
     $this->view->fetchpasswordForm = $fetchpasswordForm;
     //Добавим путь к действию
     $this->_breadcrumbs->addStep($this->Translate('Вход'), $this->getUrl('login'));
     $this->_breadcrumbs->addStep($this->Translate('Получить пароль'));
 }
Example #11
0
 /**
  * Removes the base path of the URL to HTML resources
  *
  * @param string $html
  * @return string|bool If error, then output FALSE
  */
 protected function deleteBasePathUrl($html)
 {
     //$domHtml
     $str_begin = '<?xml version="1.0" encoding="utf-8"?>' . "\n" . '<body>';
     $str_end = '</body>';
     //---------------------------
     $filtrHtmlEntities = new Default_Form_Filter_HtmlEntities();
     $html = $filtrHtmlEntities->filter($html);
     $html = $str_begin . $html . $str_end;
     // Check for correct XML
     $domDoc = new DOMDocument('1.0', 'utf-8');
     $success = $domDoc->loadXML($html);
     if (!$success) {
         return FALSE;
     }
     // Correct code
     $domQuery = new Zend_Dom_Query();
     $domQuery->setDocumentXml($html, "utf-8");
     foreach (self::$tags as $tag => $attr) {
         $results = $domQuery->query($tag);
         if ($results->count()) {
             foreach ($results as $result) {
                 // $result variable is of DOMElement type
                 if ($result->hasAttribute($attr)) {
                     $value = $result->getAttribute($attr);
                     $st = new Default_Plugin_String($value);
                     if ($st->beginsWith('/')) {
                         // it was: /zf-myblog/public/pic/1.gif
                         // it is: /pic/1.gif
                         $baseURL = Default_Plugin_SysBox::getBaseURL();
                         $value = str_replace($baseURL, '', $value);
                         $result->setAttribute($attr, $value);
                     } else {
                         // it was: https://mysite.com:8080/zf-myblog/public/pic/1.gif
                         // it is: /pic/1.gif
                         $hostPortBaseURL = Default_Plugin_SysBox::getHostPortBaseURL();
                         $value = str_replace($hostPortBaseURL, '', $value);
                         $result->setAttribute($attr, $value);
                     }
                 }
             }
             $domDoc = $results->getDocument();
             $html = $domDoc->saveXml();
             $domQuery->setDocumentXml($html, "utf-8");
         }
     }
     $html = str_replace($str_begin, '', $html);
     $html = str_replace($str_end, '', $html);
     return $html;
 }
Example #12
0
 /**
  * 
  * Get report data
  * 
  * @param string $table
  *
  * @return array
  */
 protected function _getReportData($table)
 {
     $arrResultData = array();
     $rows_footer = array();
     $footer_colspan = 2;
     //-------------------
     // Получим данные для отчета
     $arrData = parent::_getReportData($table);
     // Установим параметры PDF по умолчанию
     $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/notice-info24x24.png');
     $arrResultData['pdf']['title_report'] = $this->Translate('Список инф. помощи');
     $arrResultData['pdf']['is_row_header'] = TRUE;
     $arrResultData['pdf']['pageFormat'] = 'A4';
     // Установим параметры для HTML по умолчанию
     $arrResultData['html']['column_model'] = $arrData['column_model'];
     $arrResultData['html']['is_group_head'] = $arrData['is_group_head'];
     $arrResultData['html']['rows_body'] = isset($arrData['rows']) ? $arrData['rows'] : array();
     $arrResultData['html']['is_row_header'] = true;
     $arrResultData['html']['footer_colspan'] = $footer_colspan;
     // Получим данные для отчета
     switch ($table) {
         case 'admin.blog_info':
             // Исключим в отчете некоторые поля
             $fieldsExcluded = array('actual');
             $newModelColumns = parent::_excludeFieldsFromReport($fieldsExcluded, $arrData['column_model']);
             $arrResultData['html']['column_model'] = $newModelColumns;
             // Получим массив записей для нижнего колонтитула
             $footers[] = array('id' => $this->Translate('Всего записей') . ':', 'info_key' => 'count', 'title_info' => ' ');
             $rows_footer = parent::_footerForReport(array('footer_colspan' => $footer_colspan, 'rows' => $arrData['rows'], 'column_model' => $newModelColumns, 'footers' => $footers));
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/notice-info24x24.png');
             $arrResultData['html']['title_report'] = $this->Translate('Список инф. помощи');
             $arrResultData['html']['rows_footer'] = $rows_footer;
             $arrResultData['html']['is_row_header'] = TRUE;
             $arrResultData['html']['footer_colspan'] = 1;
             // Установим параметры PDF
             $arrResultData['pdf']['pageFormat'] = 'A4';
             $arrResultData['pdf']['is_row_header'] = false;
             break;
         default:
             break;
     }
     return $arrResultData;
 }
Example #13
0
/**
 * Get information about PHP
 * 
 * @param Smarty $smarty
 * @return string 
 */
function smarty_function_info_php($smarty)
{
    return Default_Plugin_SysBox::getPHPInfo();
}
Example #14
0
 /**
  * Action - comments
  * actions for user comments
  *
  * Access to the action is possible in the following paths:
  * шаблон раутера - user/:username/post/:post_id/comments/*
  * 
  * - /user/user1/post/27/comments
  *
  * @return void
  */
 public function commentsAction()
 {
     $json = array();
     $result = TRUE;
     //-----------------------
     // Получим обьект запроса
     $request = $this->getRequest();
     $params = $request->getParams();
     $type_action = $params['type_action'];
     $post_id = (int) $request->getUserParam('post_id');
     $username = trim($request->getUserParam('username'));
     try {
         if ($type_action == 'delete') {
             // Удалим комментарий
             // Получим массив комментариев для удаления
             $comment_ids = $params["comment_ids"];
             $comment_ids = Zend_Json::decode($comment_ids);
             $parent_comment_id = $comment_ids[0];
             // Удалим комментарии из базы данных
             $comment = new Default_Model_DbTable_BlogPostComment($this->db);
             foreach ($comment_ids as $comment_id) {
                 if ($comment->loadForPost($post_id, $comment_id)) {
                     $comment->delete();
                 } else {
                     $result = FALSE;
                     break;
                 }
             }
             if ($result) {
                 $json = array('deleted' => true, 'result' => $this->Translate('Комментарий удален из сообщения блога'), 'comment_id' => $parent_comment_id);
             } else {
                 $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при добавлении / удалении комментария в блог') . '</em>'));
             }
         } else {
             if ($type_action == 'add' || $type_action == 'reply' || $type_action == 'edit') {
                 // Добавим/изменим комментарий на сообщение
                 $allParams = $this->_getAllParams();
                 $reply_id = $params["reply_id"];
                 $formAddComment = new Default_Form_AddComment($username, $post_id);
                 $result = $formAddComment->isValid($allParams);
                 if ($result) {
                     $comment = new Default_Model_DbTable_BlogPostComment($this->db);
                     if ($type_action == 'edit') {
                         if ($comment->loadForPost($post_id, $reply_id)) {
                             $comment->comment = $formAddComment->getValue('ckeditor_comment');
                         } else {
                             $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>'));
                         }
                     } else {
                         $comment->user_id = $this->_identity->user_id;
                         $comment->post_id = $post_id;
                         $comment->reply_id = $reply_id;
                         $comment->comment = $formAddComment->getValue('ckeditor_comment');
                     }
                     if ($comment->save()) {
                         if ($type_action == 'edit') {
                             $html = $formAddComment->getValue('ckeditor_comment');
                             $result = $this->Translate('Комментарий изменен');
                         } else {
                             // Получим параметр для шаблона
                             $treeComments = Default_Model_DbTable_BlogPostComment::getTreeComments($this->db, $this->user->getId(), array('post_id' => $post_id, 'comment_id' => $comment->getId()));
                             // Создадим обьект шаблона
                             $templater = Default_Plugin_SysBox::createViewSmarty();
                             //Установим параметры шаблона
                             $templater->treeComments = $treeComments;
                             $templater->authenticated = true;
                             $templater->isAdmin = $this->_isAdmin;
                             $templater->identity = $this->_identity;
                             // Получим результат шаблона
                             $html = $templater->render('user/lib/comment-item.tpl');
                             $result = $this->Translate('Добавлен комментарий к сообщению блога');
                         }
                         $json = array('added' => true, 'result' => $result, 'comment_id' => $comment->getId(), 'html' => $html);
                     } else {
                         // Ошибка записи в базу данных
                         $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>'));
                     }
                 } else {
                     // неверно заполнены поля формы
                     $json = array('class_message' => 'warning', 'messages' => $this->getFormMessages($formAddComment));
                 }
             }
         }
     } catch (Exception $e) {
         $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при добавлении / удалении комментария в блог') . '</em>', Default_Plugin_SysBox::getMessageError($e)));
     }
     $this->sendJson($json);
 }
Example #15
0
 /**
  * The event is called after Zend_Controller_Front of its dispatch loop.
  *
  * @param Zend_Controller_Request_Abstract $request
  */
 public function dispatchLoopShutdown()
 {
     // Сформируем суммарный отчет времени выполнения запроса
     Default_Plugin_SysBox::profilerTotalReport2Html($this->_startTimeProfiler, 'db');
 }
Example #16
0
 /**
  * 
  * Get report data
  * 
  * @param string $table
  *
  * @return array
  */
 protected function _getReportData($table)
 {
     $arrResultData = array();
     $rows_footer = array();
     $footer_colspan = 2;
     //-------------------
     // Получим данные для отчета
     $arrData = parent::_getReportData($table);
     // Установим параметры PDF
     $url_logo_report = Default_Plugin_SysBox::getFullURL_Res('/images/system/users48x48.png');
     //        echo $url_logo_report . '<br>';
     $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/users48x48.png');
     $arrResultData['pdf']['title_report'] = $this->Translate('Пользователи сайта');
     $arrResultData['pdf']['pageFormat'] = 'A4';
     // Установим параметры для HTML
     $arrResultData['html']['column_model'] = $arrData['column_model'];
     $arrResultData['html']['is_group_head'] = $arrData['is_group_head'];
     $arrResultData['html']['rows_body'] = isset($arrData['rows']) ? $arrData['rows'] : array();
     $arrResultData['html']['is_row_header'] = false;
     $arrResultData['html']['footer_colspan'] = $footer_colspan;
     // Получим данные для отчета
     switch ($table) {
         case 'admin.users':
             // Исключим в отчете некоторые поля
             $fieldsExcluded = array('id', 'actual', 'password');
             $newModelColumns = parent::_excludeFieldsFromReport($fieldsExcluded, $arrData['column_model']);
             $arrResultData['html']['column_model'] = $newModelColumns;
             // Получим массив записей для нижнего колонтитула
             $footers[] = array('username' => $this->Translate('Всего записей') . ':', 'email' => 'count');
             $rows_footer = parent::_footerForReport(array('footer_colspan' => $footer_colspan, 'rows' => $arrData['rows'], 'column_model' => $newModelColumns, 'footers' => $footers));
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/users34x34.png');
             $arrResultData['html']['title_report'] = $this->Translate('Список пользователей сайта');
             $arrResultData['html']['rows_footer'] = $rows_footer;
             $arrResultData['html']['is_row_header'] = true;
             //                $arrResultData['html']['footer_colspan'] = $footer_colspan;
             // Установим параметры PDF
             $arrResultData['pdf']['pageFormat'] = 'A4-L';
             break;
         default:
             break;
     }
     return $arrResultData;
 }
 /**
  * Action - video
  * upload/download/ordering video
  * 
  * Access to the action is possible in the following paths:
  * - /blogmanager/video
  *
  * @return void
  */
 public function videoAction()
 {
     $json = array();
     $filterSanitize = new Default_Form_Filter_Sanitize();
     //-----------------------
     // Получим обьект записи
     $request = $this->getRequest();
     $params = $request->getParams();
     $post_id = (int) $request->getPost('id');
     if (!$post_id) {
         $post_id = (int) $request->getParam('id');
     }
     $post = new Default_Model_DbTable_BlogPost($this->db);
     // Если конкретной записи нет, то перейдем к странице по умолчанию
     if (!$post->loadForUser($this->_identity->user_id, $post_id)) {
         $this->_redirect('/blogmanager');
     }
     // Определим тип операции над видео: 'upload', 'reorder', 'delete'
     // Загрузка файла с помощью - FileUploader
     if (Default_Plugin_FileUploader::isFileUploader()) {
         // Получим вид загрузчика - Iframe или Xhr
         $fileUploader = Default_Plugin_FileUploader::isFileUploader();
         // list of valid extensions, ex. array("jpeg", "xml", "bmp")
         $allowedExtensions = $params['allowedExtensions'];
         $allowedExtensions = str_replace(' ', '', $allowedExtensions);
         $arrAllowedExtensions = explode(';', $allowedExtensions);
         // max file size in bytes
         $sizeLimit = (int) $request->getParam('sizeLimit');
         // Получим обьект загрузчика файлов
         try {
             $uploader = new Default_Plugin_FileUploader($arrAllowedExtensions, $sizeLimit);
             // Определим путь загрузки файлов
             $path = Default_Model_DbTable_BlogPostVideo::GetUploadPath();
             $path .= '/';
             //Загрузим файлы
             $result = $uploader->handleUpload($path);
         } catch (Exception $e) {
             $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка загрузки файла') . '</em>', Default_Plugin_SysBox::getMessageError($e)));
             if ($fileUploader == 'Iframe') {
                 $this->sendJson_Html($json);
             } else {
                 $this->sendJson($json);
             }
             return;
         }
         if (isset($result['success'])) {
             // Создадим обьект изображения
             try {
                 $filename = $path . $uploader->file->getName();
                 $pathinfo = pathinfo($filename);
                 $ext = $pathinfo['extension'];
                 $video = new Default_Model_DbTable_BlogPostVideo($post->getDb());
                 $video->post_id = $post->getId();
                 $video->uploadFile($filename);
                 $video->identifier = basename($filename);
                 $video->type = 'file-' . $ext;
                 if (!$video->save()) {
                     $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>'));
                     if ($fileUploader == 'Iframe') {
                         $this->sendJson_Html($json);
                     } else {
                         $this->sendJson($json);
                     }
                     return;
                 }
                 $json['success'] = $result['success'];
                 $json['video_id'] = $video->getId();
                 $json['filename'] = $video->identifier;
                 $json['post_id'] = $video->post_id;
                 $json['form_action'] = $this->getUrl('video', 'blogmanager');
                 // Определим путь к изображению для видео
                 $srcImage = 'images/media/thumbs/' . $video->type . '.png';
                 $json['url_image'] = $this->getUrlRes($srcImage) . '?id=' . $video->getId();
             } catch (Exception $e) {
                 $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка загрузки файла') . '</em>', Default_Plugin_SysBox::getMessageError($e)));
                 if ($fileUploader == 'Iframe') {
                     $this->sendJson_Html($json);
                 } else {
                     $this->sendJson($json);
                 }
                 return;
             }
         } else {
             // Error
             $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка загрузки файла') . '</em>', $result['error']));
             if ($fileUploader == 'Iframe') {
                 $this->sendJson_Html($json);
             } else {
                 $this->sendJson($json);
             }
             return;
         }
     } else {
         if ($request->getPost('add_video_url')) {
             // Создадим обьект изображения
             try {
                 $strInfoVideo = $request->getPost('info_video');
                 $strInfoVideo = stripslashes($strInfoVideo);
                 $arrInfoVideo = Zend_Json::decode($strInfoVideo);
                 $video = new Default_Model_DbTable_BlogPostVideo($post->getDb());
                 $video->post_id = $post->getId();
                 $video->identifier = $arrInfoVideo['url'];
                 $video->type = $arrInfoVideo['type'];
                 if (!$video->save()) {
                     $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>'));
                     $this->sendJson($json);
                     return;
                 }
                 // Определим путь к изображению для видео
                 $srcImage = 'images/media/thumbs/' . $video->type . '.png';
                 $json['video_id'] = $video->getId();
                 $json['filename'] = $video->identifier;
                 $json['post_id'] = $video->post_id;
                 $json['url_image'] = $this->getUrlRes($srcImage) . '?id=' . $video->getId();
                 $json['form_action'] = $this->getUrl('video', 'blogmanager');
                 $json['result'] = $this->Translate('URL на ресурс добавлен');
             } catch (Exception $e) {
                 $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка загрузки файла') . '</em>', Default_Plugin_SysBox::getMessageError($e)));
                 $this->sendJson($json);
                 return;
             }
         } else {
             if ($request->getPost('reorder')) {
                 $order = $request->getPost('preview-video');
                 $post->setVideoOrder($order);
             } else {
                 if ($request->getPost('delete')) {
                     $video_id = (int) $request->getPost('image');
                     $video = new Default_Model_DbTable_BlogPostVideo($this->db);
                     if ($video->loadForPost($post->getId(), $video_id)) {
                         $video->delete();
                         // Определим кол. оставшихся изображений
                         $count_videos = count($post->video) - 1;
                         $json = array('deleted' => true, 'image_id' => $video_id, 'count_images' => $count_videos);
                     }
                 } else {
                     if ($request->getPost('comment_update')) {
                         $video_id = (int) $request->getPost('image');
                         $video = new Default_Model_DbTable_BlogPostVideo($this->db);
                         if ($video->loadForPost($post->getId(), $video_id)) {
                             $comment = $request->getPost('comment');
                             // Отфильтруем ненужные теги в комментарии
                             $comment = $filterSanitize->filter($comment);
                             // Выделим название и комментарий
                             $arrComment = explode('#', $comment);
                             // Если тип видео -> 'url-godtv', то важно получить точное название видео
                             // это название должно точно соответствовать пути к загрузочной странице этого видео
                             // пр. http://god-tv.ru/%D0%A0%D0%B5%D1%88%D0%B0%D1%8E%D1%89%D0%B8%D0%B9-%D1%80%D1%8B%D0%B2%D0%BE%D0%BA-%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD
                             // или так %D0%A0%D0%B5%D1%88%D0%B0%D1%8E%D1%89%D0%B8%D0%B9-%D1%80%D1%8B%D0%B2%D0%BE%D0%BA-%D1%81%D0%BC%D0%BE%D1%82%D1%80%D0%B5%D1%82%D1%8C-%D0%BE%D0%BD%D0%BB%D0%B0%D0%B9%D0%BD
                             // или так "Решающий-рывок-смотреть-онлайн"
                             if ($video->type == 'url-godtv') {
                                 $tmpName = urldecode($arrComment[0]);
                                 $tmpNames = explode('/', $tmpName);
                                 $tmpName = $tmpNames[count($tmpNames) - 1];
                                 $arrComment[0] = $tmpName;
                             }
                             if (count($arrComment) > 1) {
                                 $video->name = $arrComment[0];
                                 $video->comment = $arrComment[1];
                             } else {
                                 $video->name = $arrComment[0];
                             }
                             // Сохраним в базе данных
                             if (!$video->save()) {
                                 $json = array('class_message' => 'warning', 'messages' => array('<em>' . $this->Translate('Ошибка при сохранении данных') . '</em>'));
                                 $this->sendJson($json);
                                 return;
                             }
                             $json = array('commented' => true, 'title' => $video->name, 'comment' => $video->comment);
                         }
                     } else {
                         if ($request->getPost('download_images')) {
                             // Загрузим изображения в виде HTML на страницу
                             // Получим файлы видео для статьи
                             $videos = Default_Model_DbTable_BlogPostVideo::GetVideo($this->db, array('post_id' => $post_id));
                             // Создадим обьект шаблона
                             $templater = Default_Plugin_SysBox::createViewSmarty();
                             //Установим параметры шаблона
                             $templater->videos = $videos;
                             $templater->post_id = $post_id;
                             // Получим результат шаблона
                             $html = $templater->render('blogmanager/lib/download-video.tpl');
                             $json = array('downloaded' => true, 'html' => $html);
                         }
                     }
                 }
             }
         }
     }
     if ($this->_isAjaxRequest) {
         $this->sendJson($json);
     } else {
         $this->sendJson_Html($json);
     }
 }
Example #18
0
 /**
  * Get text markdown markup file
  * file is selected according to the localization
  * 
  * @param array $params Set params for [filename, content, type]
  * @return string
  */
 public function getMarkdown($params)
 {
     $arBox = new Default_Plugin_ArrayBox();
     $strBox = new Default_Plugin_String();
     $filename = isset($params['filename']) ? $params['filename'] : '';
     $strFile = isset($params['content']) ? $params['content'] : '';
     $type = isset($params['type']) ? $params['type'] : 'github';
     //Type of Markdown: traditional, github, extra
     $title = '';
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $locale = $locale == 'uk' ? 'ru' : $locale;
     $title = "";
     $filename = trim($filename);
     $filename = str_replace('\\', '/', $filename);
     //-------------------------------------------
     if ($filename) {
         if (is_file($filename)) {
             $lastFilename = $arBox->set($filename, "/")->getLast();
             // Set title
             $title = $lastFilename;
             // Check word in uppercase
             $upperFilename = $strBox->set($lastFilename)->toUpper()->get();
             $isUpper = $arBox->set($lastFilename, ".")->get(0) == $arBox->set($upperFilename, ".")->get(0);
             if ($isUpper) {
                 $locale = strtoupper($locale);
             }
             // Get the name of the file to a different locale
             $lastFilename = $arBox->set($lastFilename, ".")->get(0) . "-{$locale}.md";
             $localeFilename = $arBox->set($filename, "/")->pop()->join('/') . "/{$lastFilename}";
             // Get file content
             if (is_file($localeFilename)) {
                 // Set title
                 $title = $lastFilename;
                 $strFile = file_get_contents($localeFilename);
             } else {
                 $strFile = file_get_contents($filename);
             }
         } else {
             // Get file name
             $filename = APPLICATION_TEMPLATES . "/{$this->_params['controller']}/{$filename}";
             if (!is_file($filename)) {
                 throw new Exception("File '{$filename}' does not exist.");
             }
             $lastFilename = $arBox->set($filename, "/")->getLast();
             // Set title
             $title = $lastFilename;
             // Check word in uppercase
             $upperFilename = $strBox->set($lastFilename)->toUpper()->get();
             $isUpper = $arBox->set($lastFilename, ".")->get(0) == $arBox->set($upperFilename, ".")->get(0);
             if ($isUpper) {
                 $locale = strtoupper($locale);
             }
             // Get the name of the file to a different locale
             $lastFilename = $arBox->set($lastFilename, ".")->get(0) . "-{$locale}.md";
             $localeFilename = $arBox->set($filename, "/")->pop()->join('/') . "/{$lastFilename}";
             // Get file content
             if (is_file($localeFilename)) {
                 // Set title
                 $title = $lastFilename;
                 $strFile = file_get_contents($localeFilename);
             } else {
                 $strFile = file_get_contents($filename);
             }
         }
     }
     switch ($type) {
         case 'traditional':
             $markdown = new \cebe\markdown\Markdown();
             break;
         case 'github':
             $markdown = new \cebe\markdown\GithubMarkdown();
             break;
         case 'extra':
             $markdown = new \cebe\markdown\MarkdownExtra();
             break;
         default:
             break;
     }
     // Get markdown parser text
     $text = $markdown->parse($strFile);
     // Get content
     $content = array('title' => $title, 'text' => "<div class=\"markdown-body\">{$text}</div>");
     return $content;
 }
Example #19
0
 /**
  * Constructor
  * 
  * @param array $params
  */
 public function __construct($params)
 {
     $this->_schema = $params['schema'] ? $params['schema'] : '';
     $this->_table = $params['table'];
     $this->_fieldKey1 = $params['fieldKey1'];
     $this->_fieldKey2 = $params['fieldKey2'];
     $this->_id = (int) $params['id'] ? $params['id'] : 0;
     if (isset($params['adapter'])) {
         $this->_adapter = $params['adapter'];
     } else {
         // Если адаптер не задан, пробуем подключить адаптер заданный по умолчанию для Zend_Db_Table
         $adapter = Zend_Db_Table::getDefaultAdapter();
         // Если адаптер по умолчанию не задан выбрасываем исключение
         if ($adapter == null) {
             throw new Exception(Default_Plugin_SysBox::Translate('Адаптер базы данных, заданный по умолчанию не был найден'));
         }
     }
 }
Example #20
0
 /**
  * Get the full URL to the resource
  *
  * @return string
  */
 public function getFullUrl_Res($username = '')
 {
     return Default_Plugin_SysBox::getFullURL_Res($this->getFullUrl($username));
 }
Example #21
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('Очистить кеш'));
 }
Example #22
0
 function getSize()
 {
     if (isset($_SERVER["CONTENT_LENGTH"])) {
         return (int) $_SERVER["CONTENT_LENGTH"];
     } else {
         throw new Exception(Default_Plugin_SysBox::Translate('Длина, полученного содержимого слишком большая.'));
     }
 }
Example #23
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;
 }
Example #24
0
 static function mpdfGenerator_Html2PDF($params = array())
 {
     $translate = Zend_Registry::get('Zend_Translate');
     //-----------------------------
     if (!$params['pdfReport'] || !$params['html']) {
         throw new Exception($translate->_('ERR_CREATE_PDF_REPORT'));
     }
     $mode = '';
     // Получим URLLogoReport
     $config = Zend_Registry::get('config');
     $urlLogoReport = $config['user']['main']['logo_report'];
     $urlLogoReport = self::getFullURL_Res($urlLogoReport);
     //------------------------------------------------------
     // Установим значения по умолчанию
     $defaults = array('pdfReport' => '', 'html' => '', 'isCommonFont' => FALSE, 'pathStylesheet' => 'css/report/mpdf-style.css', 'isHeaders' => TRUE, 'isFooters' => TRUE, 'mirrorMargins' => TRUE, 'headerLeftMargin' => '', 'headerCentreMargin' => $urlLogoReport, 'headerRightMargin' => '{PAGENO}/{nbpg}', 'footerLeftMargin' => '{DATE Y-m-j}', 'footerCentreMargin' => '', 'footerRightMargin' => '', 'pageFormat' => 'A4');
     // Обьединим два массива
     $params = array_merge($defaults, $params);
     if (!$params['footerRightMargin']) {
         $params['footerRightMargin'] = self::getFullUrl_For_FilePDF($params['pdfReport']);
     }
     // Установим значения переменных из массива
     //        extract($params, EXTR_OVERWRITE);
     try {
         // Изменим параметры PHP
         self::iniSetConfig_PHP(array("memory_limit" => "500M", "max_execution_time" => "300"));
         //            require_once("mpdf_source.php");
         require_once "mpdf.php";
         if ($params['isCommonFont']) {
             $mode = 'c';
         }
         $isHeaders = (bool) $params['isHeaders'];
         $isFooters = (bool) $params['isFooters'];
         if ($isHeaders || $isFooters) {
             $mpdf = new mPDF($mode, $params['pageFormat'], '', '', 15, 15, 32, 20, 10, 10);
         } else {
             $mpdf = new mPDF($mode, $params['pageFormat']);
         }
         // Установим параметры для оптимизации (уменьшим время испольнения и используемую память)
         $mpdf->useOnlyCoreFonts = true;
         $mpdf->useSubstitutions = false;
         $mpdf->simpleTables = true;
         // Уменьшает время выполнения
         $mpdf->packTableData = true;
         // Уменьшает используемую память
         $mpdf->use_kwt = true;
         //Keep-with-table  Оставить заголовок таблицы вместе с маблицей на одной странице
         //            $mpdf->shrink_tables_to_fit=0;
         //            $mpdf->hyphenate = true;
         //            $mpdf->SHYlang = 'ru';
         //            $mpdf->SHYleftmin = 3;
         // Определим заголовок страницы
         $header = " \n            <table width=\"100%\" style=\"border-bottom: 1px solid #000000; vertical-align: bottom;  font-weight: bold; font-size: 14pt; color: #000088;\"><tr>\n            <td width=\"33%\"><span style=\"\">{$params['headerLeftMargin']}</span></td>\n            <td width=\"33%\" align=\"center\"><img src=\"{$params['headerCentreMargin']}\" /></td>\n            <td width=\"33%\" style=\"text-align: right;\"><span style=\"\">{$params['headerRightMargin']}</span></td>\n            </tr></table>\n            ";
         // Определим подвал страницы
         $footer = "\n            <table width=\"100%\" style=\"vertical-align: bottom;  font-size: 14pt; color: #000088; font-weight: bold; font-style: italic;\"><tr>\n            <td width=\"33%\"><span style=\"\">{$params['footerLeftMargin']}</span></td>\n            <td width=\"33%\" align=\"center\" style=\"\">{$params['footerCentreMargin']}</td>\n            <td width=\"33%\" style=\"text-align: right; \">{$params['footerRightMargin']}</td>\n            </tr></table>\n            ";
         if ($mirrorMargins) {
             $headerE = "\n                <table width=\"100%\" style=\"border-bottom: 1px solid #000000; vertical-align: bottom;  font-weight: bold; font-size: 14pt; color: #000088;\"><tr>\n                <td width=\"33%\"><span style=\"\"><span style=\"\">{$params['headerRightMargin']}</span></span></td>\n                <td width=\"33%\" align=\"center\"><img src=\"{$params['headerCentreMargin']}\" /></td>\n                <td width=\"33%\" style=\"text-align: right;\"><span style=\"\">{$params['headerLeftMargin']}</span></td>\n                </tr></table>\n                ";
             $footerE = "\n                <table width=\"100%\" style=\"vertical-align: bottom;  font-size: 14pt; color: #000088; font-weight: bold; font-style: italic;\"><tr>\n                <td width=\"33%\"><span style=\"\">{$params['footerRightMargin']}</span></td>\n                <td width=\"33%\" align=\"center\" style=\"\">{$params['footerCentreMargin']}</td>\n                <td width=\"33%\" style=\"text-align: right; \">{$params['footerLeftMargin']}</td>\n                </tr></table>\n                ";
             if ($isHeaders) {
                 $mpdf->mirrorMargins = TRUE;
                 // Use different Odd/Even headers and footers and mirror margins
                 $mpdf->SetHTMLHeader($headerE, 'E');
             }
             if ($isFooters) {
                 $mpdf->mirrorMargins = TRUE;
                 // Use different Odd/Even headers and footers and mirror margins
                 $mpdf->SetHTMLFooter($footerE, 'E');
             }
         }
         if ($isHeaders) {
             $mpdf->SetHTMLHeader($header);
         }
         if ($isFooters) {
             $mpdf->SetHTMLFooter($footer);
         }
         $html = $params['html'];
         //$html = '';
         //$params['pathStylesheet'] = '';
         if ($params['pathStylesheet']) {
             $stylesheet = file_get_contents($params['pathStylesheet']);
             $mpdf->WriteHTML($stylesheet, 1);
             $mpdf->WriteHTML($html, 2);
         } else {
             $mpdf->WriteHTML($html);
         }
         // Получим директорию сохранения файлов
         $dirFilePDF = self::getPath_For_FilePDF($params['pdfReport']);
         // Сохраним файл на серверном ресурсе пользователя
         $mpdf->Output($dirFilePDF, 'F');
     } catch (Exception $exc) {
         throw new Exception($exc->getMessage());
     }
     // Возвратим URL путь, полученного файла PDF
     return Default_Plugin_SysBox::getFullUrl_For_FilePDF($params['pdfReport']);
 }
Example #25
0
/**
 * 
 * Get locale
 * 
 * @param Smarty $smarty
 * @return string 
 */
function smarty_function_getlang($smarty)
{
    return Default_Plugin_SysBox::getTranslateLocale();
}
Example #26
0
 /**
  * Initialization form
  */
 public function init()
 {
     parent::init();
     //---------------- Форма ----------------
     // Указываем action формы
     $urlAction = $this->getUrl('edit', 'blogmanager');
     $urlAction .= '?id=' . $this->post->getId();
     $this->setAction($urlAction);
     //Зададим метод передачи данных
     $this->setMethod('post');
     // Задаем атрибут class для формы
     $this->setAttrib('class', 'myfrm');
     $this->setAttrib('id', 'blogpost-form');
     //------------ Добавим краткое название блога --------------
     $elTitle = new Zend_Form_Element_Text('title', array('label' => 'Название', 'maxlength' => '255', 'size' => '60', 'required' => true, 'validators' => array(array('StringLength', true, array(0, 255))), 'filters' => array(array('StringTrim'), array('StripTags'))));
     //Установим название, если блог существует
     $this->addElement($elTitle);
     if ($this->post->profile->title) {
         $this->setDefault('title', $this->post->profile->title);
     }
     //---------------- Дата создания записи в блоге ----------------
     // Элемент "Дата создания". Элемент содержит нестандартный декоратор - javascript календарь
     $elDatePost = new Zend_Form_Element_Text('ts_created', array('label' => 'Дата создания', 'maxlength' => '10', 'required' => true, 'validators' => array(array('Date', true, array('locale' => $this->_language))), 'filters' => array('StringTrim')));
     // Удаляем все существующие декораторы, назначенные по умолчанию
     $elDatePost->clearDecorators();
     // Назначаем новые, включая наш декоратор Calendar
     // Это необходимо для того что бы изображение календаря размещалось сразу за полем ввода
     $elDatePost->addDecorator('ViewHelper')->addDecorator('Calendar')->addDecorator('Errors')->addDecorator('HtmlTag', array('tag' => 'dd'))->addDecorator('Label', array('tag' => 'dt'));
     $this->addElement($elDatePost);
     //Установим дату по умолчанию
     //        $tsCreated = $this->post->ts_created;
     $locale = Default_Plugin_SysBox::getTranslateLocale();
     $format = Default_Plugin_SimpleDate::get_format_display_date($locale);
     $sd = new Default_Plugin_SimpleDate($this->post->ts_created);
     $this->setDefault('ts_created', $sd->to_display_date($format));
     //---------- Добавим элемент описания сообщения в блоге ------------
     //$this->addElement('textarea', 'content', array(
     $elDescription = new Zend_Form_Element_Textarea('ckeditor_description', array('label' => $this->Translate('Краткое описание сообщения') . ':', 'required' => false, 'validators' => array(), 'filters' => array('Sanitize')));
     $this->addElement($elDescription);
     //Установим краткое описание сообщения, если оно существует
     if ($this->post->profile->description) {
         $this->setDefault('ckeditor_description', $this->post->profile->description);
     }
     //---------- Добавим элемент содержания блога ------------
     //$this->addElement('textarea', 'content', array(
     $elContent = new Zend_Form_Element_Textarea('ckeditor_content', array('label' => $this->Translate('Ваше сообщение') . ':', 'required' => true, 'filters' => array('Sanitize')));
     $this->addElement($elContent);
     //Установим содержания блога, если оно существует
     if ($this->post->profile->content) {
         $this->setDefault('ckeditor_content', $this->post->profile->content);
     }
     //-------- Добавим кнопки --------------
     //Установим значение кнопки сохранить
     $this->addElement('submit', 'save', array('ignore' => true, 'label' => 'Сохранить'));
     $this->getElement('save')->setAttrib('class', 'btn btn-primary');
     //Перезапишем стандартные декораторы, для размещения двух кнопок рядом
     $this->getElement('save')->setDecorators(array('ViewHelper'));
     //Установим значение кнопки закрыть
     $this->addElement('submit', 'close', array('ignore' => true, 'label' => 'Закрыть'));
     $this->getElement('close')->setAttrib('class', 'btn');
     //Перезапишем стандартные декораторы, для размещения двух кнопок рядом
     $this->getElement('close')->setDecorators(array('ViewHelper'));
     //---------------- Группа данные блога ----------------
     // Группируем элементы
     // Группа полей связанных с авторизационными данными
     $this->addDisplayGroup(array('title', 'ts_created', 'ckeditor_description', 'ckeditor_content', 'save', 'close'), 'blogDataGroup', array('legend' => 'Подробная информация'));
 }
Example #27
0
 /**
  * 
  * Get report data
  * 
  * @param string $table
  *
  * @return array
  */
 protected function _getReportData($table)
 {
     $arrResultData = array();
     $rows_footer = array();
     $footer_colspan = 2;
     //-------------------
     // Получим данные для отчета
     $arrData = parent::_getReportData($table);
     // Установим параметры PDF по умолчанию
     $arrResultData['pdf']['is_row_header'] = false;
     $arrResultData['pdf']['pageFormat'] = 'A4';
     // Установим параметры для HTML по умолчанию
     $arrResultData['html']['column_model'] = $arrData['column_model'];
     $arrResultData['html']['is_group_head'] = $arrData['is_group_head'];
     $arrResultData['html']['rows_body'] = isset($arrData['rows']) ? $arrData['rows'] : array();
     $arrResultData['html']['is_row_header'] = TRUE;
     $arrResultData['html']['footer_colspan'] = $footer_colspan;
     // Исключим в отчете некоторые поля
     $fieldsExcluded = array('pr');
     $newModelColumns = parent::_excludeFieldsFromReport($fieldsExcluded, $arrData['column_model']);
     $arrResultData['html']['column_model'] = $newModelColumns;
     // Получим массив записей для нижнего колонтитула
     $footers[] = array('id' => $this->Translate('Всего записей') . ':', 'ts' => 'count', 'pr_name' => ' ');
     // Сформируем набор записей для нижнего колонтитула
     $rows_footer = parent::_footerForReport(array('footer_colspan' => $footer_colspan, 'rows' => isset($arrData['rows']) ? $arrData['rows'] : array(), 'column_model' => $newModelColumns, 'footers' => $footers));
     $arrResultData['html']['rows_footer'] = $rows_footer;
     // Получим данные для отчета
     switch ($table) {
         case 'admin.log_msg':
             // Установим параметры PDF
             $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/update_log.gif');
             $arrResultData['pdf']['title_report'] = $this->Translate('Лог сообщений');
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/update_log.gif');
             $arrResultData['html']['title_report'] = $this->Translate('Лог сообщений');
             break;
         case 'admin.log_stat':
             // Установим параметры PDF
             $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/logStat20x20.png');
             $arrResultData['pdf']['title_report'] = $this->Translate('Лог статистики');
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/logStat20x20.png');
             $arrResultData['html']['title_report'] = $this->Translate('Лог статистики');
             break;
         case 'admin.log_error':
             // Установим параметры PDF
             $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/delete.gif');
             $arrResultData['pdf']['title_report'] = $this->Translate('Лог ошибок');
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/delete.gif');
             $arrResultData['html']['title_report'] = $this->Translate('Лог ошибок');
             break;
         default:
             break;
     }
     return $arrResultData;
 }
Example #28
0
 /**
  * 
  * Get report data
  * 
  * @param string $table
  *
  * @return array
  */
 protected function _getReportData($table)
 {
     $arrResultData = array();
     $footers = array();
     $rows_footer = array();
     $footer_colspan = 2;
     //-------------------
     // Получим данные для отчета
     $arrData = parent::_getReportData($table);
     // Установим параметры PDF
     $arrResultData['pdf']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/index_doc48x48.png');
     $arrResultData['pdf']['title_report'] = $this->Translate('Список сообщений');
     $arrResultData['pdf']['is_row_header'] = TRUE;
     $arrResultData['pdf']['pageFormat'] = 'A4';
     // Установим параметры для HTML
     $arrResultData['html']['column_model'] = $arrData['column_model'];
     $arrResultData['html']['rows_body'] = isset($arrData['rows']) ? $arrData['rows'] : array();
     $arrResultData['html']['is_group_head'] = $arrData['is_group_head'];
     $arrResultData['html']['is_row_header'] = TRUE;
     $arrResultData['html']['footer_colspan'] = $footer_colspan;
     // Получим данные для отчета
     switch ($table) {
         case 'admin.blog_posts':
             $footer_colspan = 1;
             // Исключим в отчете некоторые поля
             $fieldsExcluded = array('id', 'actual');
             $newModelColumns = parent::_excludeFieldsFromReport($fieldsExcluded, $arrData['column_model']);
             $arrResultData['html']['column_model'] = $newModelColumns;
             // Получим массив записей для нижнего колонтитула
             $footers[] = array('user_id' => $this->Translate('Всего записей') . ':', 'url' => 'count');
             $footers[] = array('user_id' => $this->Translate('Минимальная дата') . ':', 'ts_created' => 'min');
             $footers[] = array('user_id' => $this->Translate('Максимальная дата') . ':', 'ts_published' => 'max');
             $rows_footer = parent::_footerForReport(array('footer_colspan' => $footer_colspan, 'rows' => $arrData['rows'], 'column_model' => $newModelColumns, 'footers' => $footers));
             // Установим параметры для HTML
             $arrResultData['html']['logo_report'] = Default_Plugin_SysBox::getFullURL_Res('/images/system/documents32x32.png');
             $arrResultData['html']['title_report'] = $this->Translate('Список сообщений в блогах');
             $arrResultData['html']['rows_footer'] = $rows_footer;
             $arrResultData['html']['footer_colspan'] = $footer_colspan;
             // Установим параметры для PDF
             $arrResultData['pdf']['is_row_header'] = false;
             break;
         default:
             break;
     }
     return $arrResultData;
 }
Example #29
0
 /**
  * Initialization form
  * 
  * return void
  */
 public function init()
 {
     parent::init();
     // Получим объект переводчика
     $translate = Zend_Registry::get('Zend_Translate');
     // Задаем объект переводчика для формы
     $this->setTranslator($translate);
     /* Specifies the prefix for samopisnyh elements, validators, filters, and decorators.
        This Zend Form will know where to find our custom items */
     $this->addElementPrefixPath('Default_Form_Validate', APPLICATION_PATH . '/forms/validate/', 'validate');
     $this->addElementPrefixPath('Default_Form_Filter', APPLICATION_PATH . '/forms/filter/', 'filter');
     $this->addElementPrefixPath('Default_Form_Decorator', APPLICATION_PATH . '/forms/decorator/', 'decorator');
     $this->addPrefixPath('Default_Form_Element', APPLICATION_PATH . '/forms/element/', 'element');
     // Получим язык сайта
     $this->_language = Default_Plugin_SysBox::getTranslateLocale();
     // Set
     $auth = Zend_Auth::getInstance();
     if ($auth->hasIdentity()) {
         $identity = $auth->getIdentity();
         $this->_user_type = $identity->user_type;
     } else {
         $this->_user_type = 'guest';
     }
 }