2014-06-06 15:56:45 +03:00
|
|
|
|
<?php
|
2014-10-08 11:56:30 +03:00
|
|
|
|
/*
|
2014-06-06 15:56:45 +03:00
|
|
|
|
* LiveStreet CMS
|
2014-10-08 11:56:30 +03:00
|
|
|
|
* Copyright © 2013 OOO "ЛС-СОФТ"
|
2014-06-06 15:56:45 +03:00
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* Official site: www.livestreetcms.com
|
|
|
|
|
* Contact e-mail: office@livestreetcms.com
|
|
|
|
|
*
|
|
|
|
|
* GNU General Public License, version 2:
|
|
|
|
|
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
|
|
|
|
|
*
|
|
|
|
|
* ------------------------------------------------------
|
|
|
|
|
*
|
|
|
|
|
* @link http://www.livestreetcms.com
|
2014-10-08 11:56:30 +03:00
|
|
|
|
* @copyright 2013 OOO "ЛС-СОФТ"
|
2014-06-06 15:56:45 +03:00
|
|
|
|
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
|
|
|
|
|
*
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************
|
|
|
|
|
* Здесь выполняется основная подготовка движка к запуску
|
|
|
|
|
* Внимание! Инициализация ядра здесь не происходит.
|
|
|
|
|
* При необходимости нужно вручную выполнить Engine::getInstance()->Init();
|
|
|
|
|
* Подключение автозагрузчика классов происходит только при инициализации ядра.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Формируем путь до фреймворка
|
|
|
|
|
*/
|
2015-04-05 15:37:13 +03:00
|
|
|
|
$sPathToFramework = dirname(dirname(__FILE__)) . '/framework/';
|
2014-06-06 15:56:45 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Подключаем ядро
|
|
|
|
|
*/
|
2015-02-10 18:28:18 +02:00
|
|
|
|
require_once($sPathToFramework . '/classes/engine/Engine.class.php');
|
2014-06-06 15:56:45 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Определяем окружение
|
|
|
|
|
* В зависимости от окружения будет дополнительно подгружаться необходимый конфиг.
|
|
|
|
|
* Например, для окружения "production" будет загружен конфиг /application/config/config.production.php
|
|
|
|
|
* По дефолту работает окружение "local"
|
|
|
|
|
*/
|
2014-10-08 11:56:30 +03:00
|
|
|
|
$sEnv = Engine::DetectEnvironment(array(
|
|
|
|
|
'production' => array('your-machine-name'),
|
|
|
|
|
));
|
2014-06-06 15:56:45 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Дополнительные подготовка фреймворка
|
|
|
|
|
*/
|
2015-02-10 18:28:18 +02:00
|
|
|
|
require_once($sPathToFramework . '/bootstrap/start.php');
|
2014-06-06 15:56:45 +03:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Подключаем загрузчик конфигов
|
|
|
|
|
*/
|
2015-02-10 18:28:18 +02:00
|
|
|
|
require_once($sPathToFramework . '/config/loader.php');
|
2014-06-06 15:56:45 +03:00
|
|
|
|
|
2014-09-05 08:55:04 +03:00
|
|
|
|
/**
|
|
|
|
|
* Определяем дополнительные параметры роутинга
|
|
|
|
|
*/
|
2015-03-17 10:38:47 +02:00
|
|
|
|
$aRouterParams = array(
|
|
|
|
|
'callback_after_parse_url' => array(
|
|
|
|
|
function () {
|
|
|
|
|
/**
|
|
|
|
|
* Логика по ЧПУ топиков
|
|
|
|
|
* Если URL соответствует шаблону ЧПУ топика, перенаправляем обработку на экшен/евент /blog/_show_topic_url/
|
2015-03-19 04:40:22 +02:00
|
|
|
|
* Через свои параметры конфига передаем исходный URL
|
2015-03-17 10:38:47 +02:00
|
|
|
|
* Суть обработки _show_topic_url в том, чтобы определить ID топика и корректность его URL, если он некорректен, то произвести его корректировку через внешний редирект на правильный URL
|
|
|
|
|
* Если удалось определить топик и URL корректный, то происходит внутренний редирект на стандартный евент отображения топика по ID (/blog/12345.html)
|
|
|
|
|
*/
|
2014-09-05 08:55:04 +03:00
|
|
|
|
|
2015-03-17 10:38:47 +02:00
|
|
|
|
$sUrlRequest = '';
|
|
|
|
|
if (Router::GetAction()) {
|
|
|
|
|
$sUrlRequest .= Router::GetAction();
|
|
|
|
|
}
|
|
|
|
|
if (Router::GetActionEvent()) {
|
|
|
|
|
$sUrlRequest .= '/' . Router::GetActionEvent();
|
|
|
|
|
}
|
|
|
|
|
if (Router::GetParams()) {
|
|
|
|
|
$sUrlRequest .= '/' . join('/', Router::GetParams());
|
|
|
|
|
}
|
|
|
|
|
/**
|
|
|
|
|
* Функция для формирования регулярного выражения по маске URL топика
|
|
|
|
|
*
|
|
|
|
|
* @param string $sUrl
|
|
|
|
|
* @return string
|
|
|
|
|
*/
|
|
|
|
|
$funcMakePreg = function ($sUrl) {
|
|
|
|
|
$sUrl = preg_quote(trim($sUrl, '/ '));
|
|
|
|
|
return strtr($sUrl, Config::Get('module.topic.url_preg'));
|
|
|
|
|
};
|
|
|
|
|
$sPreg = $funcMakePreg(Config::Get('module.topic.url'));
|
|
|
|
|
if (preg_match('@^' . $sPreg . '$@iu', $sUrlRequest)) {
|
2015-04-19 04:51:06 +03:00
|
|
|
|
Router::SetAction(Router::getInstance()->Rewrite('blog'));
|
2015-03-17 10:38:47 +02:00
|
|
|
|
Router::SetActionEvent('_show_topic_url');
|
|
|
|
|
Router::SetParams(array());
|
|
|
|
|
/**
|
|
|
|
|
* Хак - через конфиг передаем нужные параметры в обработчик эвента
|
|
|
|
|
* Модуль кеша здесь нельзя использовать, т.к. еще не произошло инициализации ядра
|
|
|
|
|
*/
|
|
|
|
|
Config::Set('module.topic._router_topic_original_url', $sUrlRequest);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
)
|
2014-09-05 08:55:04 +03:00
|
|
|
|
);
|
2014-12-01 10:19:59 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Проверяем наличие директории install
|
|
|
|
|
*/
|
|
|
|
|
if (is_dir(rtrim(Config::Get('path.application.server'),
|
|
|
|
|
'/') . '/install') && (!isset($_SERVER['HTTP_APP_ENV']) or $_SERVER['HTTP_APP_ENV'] != 'test')
|
|
|
|
|
) {
|
|
|
|
|
$sUrl = rtrim(str_replace('index.php', '', $_SERVER['PHP_SELF']), '/\\') . '/application/install/';
|
|
|
|
|
header('Location: ' . $sUrl, true, 302);
|
|
|
|
|
exit();
|
|
|
|
|
}
|