http://www.gnu.org/copyleft/gpl.html GNU/GPL, смотрите LICENSE.php
* Joostina! - свободное программное обеспечение. Эта версия может быть изменена
* в соответствии с Генеральной Общественной Лицензией GNU, поэтому возможно
* её дальнейшее распространение в составе результата работы, лицензированного
* согласно Генеральной Общественной Лицензией GNU или других лицензий свободных
* программ или программ с открытым исходным кодом.
* Для просмотра подробностей и замечаний об авторском праве, смотрите файл COPYRIGHT.php.
*/
// Установка флага родительского файла
define( '_VALID_MOS', 1 );
if (function_exists('memory_get_usage'))
define( '_MEM_USAGE_START', memory_get_usage() );
else
define( '_MEM_USAGE_START', null );
// проверка конфигурационного файла, если не обнаружен, то загружается страница установки
if (!file_exists( 'configuration.php' ) || filesize( 'configuration.php' ) < 10) {
$self = rtrim( dirname( $_SERVER['PHP_SELF'] ), '/\\' ) . '/';
header("Location: http://" . $_SERVER['HTTP_HOST'] . $self . "installation/index.php" );
exit();
}
// подключение файла эмуляции отключения регистрации глобальных переменных
require( 'globals.php' );
// подключение файла конфигурации
require_once( 'configuration.php' );
// boston считаем время за которое сгенерирована страница
if($mosConfig_time_gen){
list($usec, $sec) = explode(" ",microtime());
$sysstart = ((float)$usec + (float)$sec);
};
// проверка и активация расширенного отладчика
if($mosConfig_front_debug){
require_once "includes/debug/jdebug.php";
$debug = new jdebug();
}
// Проверка SSL - $http_host возвращает :<номер_порта, если он 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( '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' );
}
// boston, проверяем, разрешено ли использование системных мамботов
if($mosConfig_mmb_system_off==0) {
$_MAMBOTS->loadBotGroup( 'system' );
// триггер событий onStart
$_MAMBOTS->trigger( 'onStart' );
}
//boston, если в глобальной конфигурации не указано использовать 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{
// boston, функция sefRelToAbs() - системная, создадим для неё заглушку
function sefRelToAbs( $string ) {
global $mosConfig_com_frontpage_clear;
if (eregi("option=com_frontpage", $string) & $mosConfig_com_frontpage_clear & !eregi("limit", $string)) $string = '.'; // если ссылка идёт на компонент главной страницы - очистим её
return $string ;
}
}
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, '.' );
// boston, отключение ведения сессий на фронте
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 ) );
if ($option == 'login') {
$mainframe->login();
// Всплывающее сообщение JS
if ( $message ) {
?>
logout();
// Всплывающее сообщение JS
if ( $message ) {
?>
getUser();
// обнаружение первого посещения
$mainframe->detect();
// установка проверки для overlib
$mainframe->set( 'loadOverlib', false );
$gid = intval( $my->gid );
// получение шаблона страницы
$cur_template = $mainframe->getTemplate();
/** @global