1
0
Fork 0
mirror of https://github.com/Oreolek/ifhub.club.git synced 2024-07-02 22:45:02 +03:00
ifhub.club/bootstrap/start.php

120 lines
5.1 KiB
PHP
Raw Normal View History

<?php
/*
* LiveStreet CMS
* Copyright © 2013 OOO "ЛС-СОФТ"
*
* ------------------------------------------------------
*
* 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
* @copyright 2013 OOO "ЛС-СОФТ"
* @author Maxim Mzhelskiy <rus.engine@gmail.com>
*
*/
/************************************************************
* Здесь выполняется основная подготовка движка к запуску
* Внимание! Инициализация ядра здесь не происходит.
* При необходимости нужно вручную выполнить Engine::getInstance()->Init();
* Подключение автозагрузчика классов происходит только при инициализации ядра.
*/
/**
* Формируем путь до фреймворка
*/
$sPathToFramework = dirname(dirname(__FILE__)) . '/framework/';
/**
* Подключаем ядро
*/
require_once($sPathToFramework . '/classes/engine/Engine.class.php');
/**
* Определяем окружение
* В зависимости от окружения будет дополнительно подгружаться необходимый конфиг.
* Например, для окружения "production" будет загружен конфиг /application/config/config.production.php
* По дефолту работает окружение "local"
*/
$sEnv = Engine::DetectEnvironment(array(
'production' => array('your-machine-name'),
));
/**
* Дополнительные подготовка фреймворка
*/
require_once($sPathToFramework . '/bootstrap/start.php');
/**
* Подключаем загрузчик конфигов
*/
require_once($sPathToFramework . '/config/loader.php');
2014-09-05 08:55:04 +03:00
/**
* Определяем дополнительные параметры роутинга
*/
$aRouterParams = array(
'callback_after_parse_url' => array(
function () {
/**
* Логика по ЧПУ топиков
* Если URL соответствует шаблону ЧПУ топика, перенаправляем обработку на экшен/евент /blog/_show_topic_url/
2015-03-19 04:40:22 +02:00
* Через свои параметры конфига передаем исходный URL
* Суть обработки _show_topic_url в том, чтобы определить ID топика и корректность его URL, если он некорректен, то произвести его корректировку через внешний редирект на правильный URL
* Если удалось определить топик и URL корректный, то происходит внутренний редирект на стандартный евент отображения топика по ID (/blog/12345.html)
*/
2014-09-05 08:55:04 +03: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'));
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();
}