Esempio n. 1
0
 private function parsePageContent($page)
 {
     if ($page instanceof ormPage && $page->active) {
         page::assign('page_id', $page->id);
         $pages = ormPages::getActiveId();
         while (list($num, $id) = each($pages)) {
             page::assign('page_id' . $num, $id);
         }
         page::globalVar('h1', $page->h1);
         page::globalVar('title', $page->title);
         if ($page->keywords) {
             page::globalVar('keywords', $page->keywords);
         }
         if ($page->description) {
             page::globalVar('description', $page->description);
         }
         if ($page->template2_id != 0) {
             $content = page::macros('structure')->objView($page->id);
         } else {
             $content = $page->content;
         }
         $templ_name = ($templ = templates::get($page->template_id)) ? $templ->getFile() : 'default';
         system::$defTemplate = '/structure/' . $templ_name . '.tpl';
         if (empty($content)) {
             $content = ' ';
         }
         return $content;
     }
 }
Esempio n. 2
0
    public function defAction()
    {
        // Устанавливаем статус системы "в режиме администрирования".
        system::$isAdmin = true;
        page::$macros = 0;
        // Попытка авторизации
        if (!empty($_POST['enter'])) {
            if (!user::auth($_POST['login'], $_POST['passw'])) {
                $this->showAuthForm(1);
            } else {
                header("Location: " . $_SERVER["HTTP_REFERER"]);
            }
        }
        // Если пользователь не админ, показываем форму авторизации
        if (!user::isAdmin()) {
            $this->showAuthForm();
        }
        // Определяем текущий домен
        domains::curDomain();
        // Выход из системы
        if (system::issetUrl(0) && system::url(0) == 'logout') {
            user::logout();
        }
        if (system::url(0) == 'showhide') {
            $_SESSION['SH_FIELDS'] = system::url(1) == 0 ? 'hide' : 'show';
            system::stop();
        }
        // Обработка запросов от поля ObjectLinks
        ui::checkObjectLinks();
        system::$defTemplate = MODUL_DIR . '/mpanel/template/default.tpl';
        // Определяем модуль
        if (!system::issetUrl(0)) {
            system::setUrl(0, user::getDefModul());
        }
        // Если есть ссылка на обработчик формы
        if (!empty($_POST['right'])) {
            system::setUrl(1, system::POST('right', isVarName));
        }
        // Определяем право
        if (system::issetUrl(1)) {
            // Проверяем существует ли указанное право
            if (user::issetRight(system::url(1))) {
                $currRight = system::url(1);
            } else {
                if (user::issetRight(str_replace('_proc', '', system::url(1)))) {
                    $currRight = system::url(1);
                }
            }
        } else {
            // Пытаемся найти право по умолчанию
            $def_right = user::getDefaultRight(system::url(0));
            if ($def_right) {
                $currRight = $def_right;
                system::setUrl(1, $def_right);
            }
        }
        $this->getMenu();
        page::assign('current_url', system::getCurrentUrl());
        page::assign('admin_url', system::au());
        if (!empty($currRight)) {
            // Определяем имя и метод контролера
            $pos = strpos($currRight, '_');
            if ($pos) {
                $class_name = '__' . substr($currRight, 0, $pos);
                $action_name = substr($currRight, $pos + 1, strlen($currRight) - $pos);
            } else {
                $class_name = '__' . $currRight;
                $action_name = 'defAction';
            }
            $mod_name = MODUL_DIR . '/' . system::url(0) . '/' . $class_name . '.php';
            // Пытаемся подгрузить модуль
            if (file_exists($mod_name)) {
                include $mod_name;
                if (file_exists(MODUL_DIR . '/' . system::url(0) . '/lang-ru.php')) {
                    include MODUL_DIR . '/' . system::url(0) . '/lang-ru.php';
                }
                ui::setHeader(lang::right($currRight));
                if (class_exists($class_name)) {
                    eval('$c = new ' . $class_name . '();');
                    if (ui::$stop) {
                        $content = '.';
                    } else {
                        if (method_exists($c, $action_name)) {
                            $content = call_user_func(array($c, $action_name));
                        }
                    }
                }
            }
            if (empty($content)) {
                $msg = lang::get('TEXT_PROC_NOTFOUND2') . '<br />' . system::getCurrentUrl() . '<br /><br />
	                        ' . lang::get('TEXT_PROC_NOTFOUND3') . '<br />' . $mod_name . '<br /><br />
	                        ' . lang::get('TEXT_PROC_NOTFOUND4');
                system::log(lang::get('TEXT_PROC_NOTFOUND') . ' ' . system::getCurrentUrl());
                ui::MessageBox(lang::get('TEXT_PROC_NOTFOUND'), $msg);
                system::redirect('/');
            }
        } else {
            system::log(lang::get('TEXT_ERROR_RIGHT_LOG') . system::getCurrentUrl());
            ui::MessageBox(lang::get('TEXT_ERROR_RIGHT'), lang::get('TEXT_ERROR_RIGHT2'));
            system::redirect('/');
        }
        //Производим сжатие страницы
        if (reg::getKey('/config/gzip')) {
            $PREFER_DEFLATE = false;
            $FORCE_COMPRESSION = false;
            $AE = isset($_SERVER['HTTP_ACCEPT_ENCODING']) ? $_SERVER['HTTP_ACCEPT_ENCODING'] : $_SERVER['HTTP_TE'];
            $support_gzip = strpos($AE, 'gzip') !== FALSE || $FORCE_COMPRESSION;
            $support_deflate = strpos($AE, 'deflate') !== FALSE || $FORCE_COMPRESSION;
            if ($support_gzip && $support_deflate) {
                $support_deflate = $PREFER_DEFLATE;
            }
            if ($support_deflate) {
                header("Content-Encoding: deflate");
                ob_start("compress_output_deflate");
            } else {
                if ($support_gzip) {
                    header("Content-Encoding: gzip");
                    ob_start("compress_output_gzip");
                } else {
                    ob_start();
                }
            }
        }
        return ui::getMainHTML($content);
    }
Esempio n. 3
0
 static function start()
 {
     header('Content-Type: text/html; charset=utf-8');
     self::parseUrl();
     // Опредяем текущий язык и домен (в случае необходимости обрезаем URL)
     languages::curLang();
     // Устанавливаем в доступ языковые переменные
     if (file_exists(MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php')) {
         include MODUL_DIR . '/core/sitelang-' . languages::curPrefix() . '.php';
         lang::setLang($LANG);
     }
     // Подключаем класс для работы с текущим пользователем
     user::init();
     // активация шаблонной системы
     self::$defTemplate = '/structure/default.tpl';
     page::init('%', '%');
     page::globalVar('h1', '');
     page::globalVar('title', '');
     page::globalVar('site_name', domains::curDomain()->getSiteName());
     page::globalVar('base_email', domains::curDomain()->getEmail());
     page::globalVar('user_id', user::get('id'));
     page::globalVar('pre_lang', languages::pre());
     page::globalVar('time', time());
     page::globalVar('current_url', self::getCurrentUrl());
     page::globalVar('current_url_pn', self::getCurrentUrlPN());
     page::assign('current_url', self::getCurrentUrl());
     page::assign('current_url_pn', self::getCurrentUrlPN());
     // Заглушка для IE6
     if (reg::getKey('/core/noIE6') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) {
         $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie'));
         if ($val[1] == '6.0;') {
             page::parseIt('/ieDie.tpl', false, true);
             system::stop();
         }
     }
     // Заглушка для IE7
     if (reg::getKey('/core/noIE7') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) {
         $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie'));
         if ($val[1] == '7.0;') {
             page::parseIt('/ieDie.tpl', false, true);
             system::stop();
         }
     }
     // Заглушка для IE8
     if (reg::getKey('/core/noIE8') && preg_match('/msie/i', $_SERVER['HTTP_USER_AGENT']) && !preg_match('/opera/i', $_SERVER['HTTP_USER_AGENT'])) {
         $val = explode(" ", stristr($_SERVER['HTTP_USER_AGENT'], 'msie'));
         if ($val[1] == '8.0;') {
             page::parseIt('/ieDie.tpl', false, true);
             system::stop();
         }
     }
     // Оффлайн сообщение
     if (!domains::curDomain()->online() && !user::isAdmin() && !(self::issetUrl(0) && self::url(0) == 'mpanel')) {
         page::globalVar('content', domains::curDomain()->getOfflineMsg());
         page::parseIt('/offline.tpl', false, true);
         system::stop();
     }
     // Генерация файлов robots.txt и sitemap.xml
     ormPages::getContentFileRobots();
     ormPages::getContentFileSiteMap();
     // Проверяем, есть ли текущая страница в кэше
     page::checkCache();
     // Вызов макроса через Ajax
     page::callAjaxMacros();
     // Парсим мето-информацию "по умолчанию"
     page::globalVar('keywords', reg::getKey(ormPages::getPrefix() . '/keywords'));
     page::globalVar('description', reg::getKey(ormPages::getPrefix() . '/description'));
     // Загрузка необходимого функционала в зависимости от адреса
     $content = '';
     // Пытаемся загрузить МОДУЛЬ
     if (self::issetUrl(0)) {
         $content = self::loadController('controller');
     }
     // Пытаемся загрузить СТРАНИЦУ
     if (!self::issetUrl(0) || $content === false) {
         $content = self::loadController('controller', 1, 'structure');
     }
     // Отображение сообщения "Страница не найдена"
     if (empty($content)) {
         $content = ormPages::get404();
     }
     // Парсим контент на страницу
     page::fParse('content', $content);
     // Версия для печати
     $print_file = '/structure/_' . self::getCurrentNavVal() . '.tpl';
     if (self::getCurrentNavVal() != '' && file_exists(TEMPL_DIR . $print_file)) {
         self::$defTemplate = $print_file;
     }
     if (!self::$isAdmin) {
         $title = str_replace('%text%', page::getGlobalVar('title'), reg::getKey(ormPages::getPrefix() . '/title_prefix'));
         page::globalVar('title', $title);
         if (file_exists(MODUL_DIR . '/core/template/minitext.tpl')) {
             include MODUL_DIR . '/core/template/minitext.tpl';
         }
         // Мини-тексты, если есть
         $list = reg::getList(ormPages::getPrefix() . '/minitext');
         while (list($id, $val) = each($list)) {
             //инлайн редактирование
             if (user::isAdmin() && user::issetRight('minitext_edit', 'structure')) {
                 $val = str_replace('%val%', $val, str_replace('%id%', $id, $TEMPLATE['frame']));
             }
             page::globalVar('text_' . $id, $val);
         }
     }
     // Выводим содержимое на экран
     page::parseIt(self::$defTemplate);
     // Завершение работы
     self::stop();
 }