:<номер_порта, если он 443> $http_host = explode(':',$_SERVER['HTTP_HOST']); if((!empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) != 'off' || isset($http_host[1]) && $http_host[1] == 443) && substr($mosConfig_live_site,0,8) !='https://') { $mosConfig_live_site = 'https://'.substr($mosConfig_live_site,7); } // подключение главного файла - ядра системы require_once ($mosConfig_absolute_path.'/includes/joomla.php'); //Проверка подпапки установки, удалена при работе с SVN if(file_exists('installation/index.php') && $_VERSION->SVN == 0) { define('_INSTALL_CHECK',1); include ($mosConfig_absolute_path.'/offline.php'); exit(); } // отображение страницы выключенного сайта if($mosConfig_offline == 1) { require ($mosConfig_absolute_path.'/offline.php'); } // (c) boston, проверяем, разрешено ли использование системных мамботов if($mosConfig_mmb_system_off == 0) { $_MAMBOTS->loadBotGroup('system'); // триггер событий onStart $_MAMBOTS->trigger('onStart'); } // если в глобальной конфигурации не указано использовать sef - не будем даже файлы подключать if($mosConfig_sef == 1) { if(file_exists($mosConfig_absolute_path.'/components/com_sef/sef.php')) { require_once ($mosConfig_absolute_path.'/components/com_sef/sef.php'); } else { require_once ($mosConfig_absolute_path.'/includes/sef.php'); } } else { // функция sefRelToAbs() - системная, создадим для неё заглушку function sefRelToAbs($string) { global $mosConfig_com_frontpage_clear,$mosConfig_live_site; if(eregi('option=com_frontpage',$string) & $mosConfig_com_frontpage_clear & !eregi('limit',$string)) $string = ''; // если ссылка идёт на компонент главной страницы - очистим её if((strpos($string,$mosConfig_live_site) !== 0)) { if(strncmp($string,'/',1) == 0) { $live_site_parts = array(); eregi("^(https?:[\/]+[^\/]+)(.*$)",$mosConfig_live_site,$live_site_parts); $string = $live_site_parts[1].$string; } else { $check = 1; // array list of non http/https URL schemes $url_schemes = explode(', ',_URL_SCHEMES); $url_schemes[] = 'http:'; $url_schemes[] = 'https:'; foreach($url_schemes as $url) { if(strpos($string,$url) === 0) { $check = 0; } } if($check) { $string = $mosConfig_live_site.'/'.$string; } } } return $string; } } // проверка и переадресация с не WWW адреса joostina_api::check_host(); require_once ($mosConfig_absolute_path.'/includes/frontend.php'); // поиск некоторых аргументов url (или form) $option = strval(strtolower(mosGetParam($_REQUEST,'option'))); $Itemid = intval(mosGetParam($_REQUEST,'Itemid',null)); if($option == '') { if($Itemid) { $query = "SELECT id, link" ."\n FROM #__menu" ."\n WHERE menutype = 'mainmenu'" ."\n AND id = ".(int)$Itemid ."\n AND published = 1"; $database->setQuery($query); } else { $query = "SELECT id, link" ."\n FROM #__menu" ."\n WHERE menutype = 'mainmenu'" ."\n AND published = 1" ."\n ORDER BY parent, ordering"; $database->setQuery($query,0,1); } $menu = new mosMenu($database); if($database->loadObject($menu)) { $Itemid = $menu->id; } $link = $menu->link; if(($pos = strpos($link,'?')) !== false) { $link = substr($link,$pos + 1).'&Itemid='.$Itemid; } parse_str($link,$temp); /** это путь, требуется переделать для лучшего управления глобальными переменными*/ foreach($temp as $k => $v) { $GLOBALS[$k] = $v; $_REQUEST[$k] = $v; if($k == 'option') { $option = $v; } } } if(!$Itemid) { // когда не найден Itemid, то ему присваивается значение по умолчанию $Itemid = 99999999; } // mainframe - основная рабочая среда API, осуществляет взаимодействие с 'ядром' $mainframe = new mosMainFrame($database,$option,'.'); // отключение ведения сессий на фронте if($mosConfig_session_front == 0) $mainframe->initSession(); // триггер событий onAfterStart if($mosConfig_mmb_system_off == 0) $_MAMBOTS->trigger('onAfterStart'); // проверка, если мы можем найти Itemid в содержимом if($option == 'com_content' && $Itemid === 0) { $id = intval(mosGetParam($_REQUEST,'id',0)); $Itemid = $mainframe->getItemid($id); } /** до сих пор не правильный Itemid??*/ if($Itemid === 0) { /** Нет, используется именно главная страница.*/ $query = "SELECT id" ."\n FROM #__menu" ."\n WHERE menutype = 'mainmenu'" ."\n AND published = 1" ."\n ORDER BY parent, ordering"; $database->setQuery($query,0,1); $Itemid = $database->loadResult(); } // путь уменьшения воздействия на шаблоны if($option == 'search') { $option = 'com_search'; } // загрузка файла русского языка по умолчанию if($mosConfig_lang == '') { $mosConfig_lang = 'russian'; } include_once ($mosConfig_absolute_path.'/language/'.$mosConfig_lang.'.php'); // контроль входа и выхода в фронт-энд $return = strval(mosGetParam($_REQUEST,'return',null)); $message = intval(mosGetParam($_POST,'message',0)); /** получение информации о текущих пользователях из таблицы сессий*/ // (c) boston, $my - важный параметр, используемый часто и не по делу, загрузим его, но с пустыми значениями $my = $mainframe->getUser(); if($option == 'login') { $mainframe->login(); // Всплывающее сообщение JS if($message) { ?> logout(); // Всплывающее сообщение JS if($message) { ?> detect(); // установка проверки для overlib $mainframe->set('loadOverlib',false); $gid = intval($my->gid); // получение шаблона страницы $cur_template = $mainframe->getTemplate(); /** ** * @global - Места для хранения информации обработки компонента*/ $_MOS_OPTION = array(); // (c) boston, подключение функций редактора, т.к. сессии(авторизация ) на фронте отключены - это тоже запрещаем if($mosConfig_frontend_login == 1) require_once ($mosConfig_absolute_path.'/editor/editor.php'); // начало буферизации основного содержимого ob_start(); if($path = $mainframe->getPath('front')) { $task = strval(mosGetParam($_REQUEST,'task','')); $ret = mosMenuCheck($Itemid,$option,$task,$gid); if($ret) { require_once ($path); } else { mosNotAuth(); } } else { header('HTTP/1.0 404 Not Found'); echo _NOT_EXIST; } $_MOS_OPTION['buffer'] = ob_get_contents(); // главное содержимое - стек вывода компонента - mainbody ob_end_clean(); // активация мамботов группы mainbody if($mosConfig_mmb_mainbody_off == 0) { $_MAMBOTS->loadBotGroup('mainbody'); $_MAMBOTS->trigger('onMainbody'); } initGzip(); // при активном кэшировании отправим браузеру более "правильные" заголовки if(!$mosConfig_caching) { // не кэшируется header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0',false); header('Pragma: no-cache'); } elseif($option != 'logout' or $option != 'login') { // кэшируется header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // 60*60=3600 - использования кэширования на 1 час header('Expires: '.gmdate('D, d M Y H:i:s',time() + 3600).' GMT'); header('Cache-Control: max-age=3600'); } // отображение предупреждения о выключенном сайте, при входе админа if(defined('_ADMIN_OFFLINE')) { include ($mosConfig_absolute_path.'/offlinebar.php'); } // буферизация итогового содержимого, необходимо для шаблонов группы templates ob_start(); // загрузка файла шаблона if(!file_exists($mosConfig_absolute_path.'/templates/'.$cur_template.'/index.php')) { echo _TEMPLATE_WARN.$cur_template; } else { require_once ($mosConfig_absolute_path.'/templates/'.$cur_template.'/index.php'); } $_MOS_OPTION['mainbody'] = ob_get_contents(); // главное содержимое - стек вывода компонента - mainbody ob_end_clean(); // активация мамботов группы mainbody if($mosConfig_mmb_mainbody_off == 0) { $_MAMBOTS->loadBotGroup('mainbody'); $_MAMBOTS->trigger('onTemplate'); } // boston, уменьшает расход памяти, но момент всё-таки спорный unset($_MAMBOTS,$mainframe); // вывод стека всего тела страницы, уже после обработки мамботами группы onTemplate echo $_MOS_OPTION['mainbody']; // подсчет времени генерации страницы if($mosConfig_time_gen) { list($usec,$sec) = explode(" ",microtime()); $sysstop = ((float)$usec + (float)$sec); echo '