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; } }
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); }
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(); }