ave-cms/index.php

177 lines
4.6 KiB
PHP
Raw Normal View History

2017-06-24 00:58:56 +03:00
<?php
/**
* AVE.cms
*
* @package AVE.cms
* @version 3.x
* @filesource
2020-07-30 16:49:44 +03:00
* @copyright © 2007-2020 AVE.cms, https://ave-cms.ru
2017-06-24 00:58:56 +03:00
*
* @license GPL v.2
*/
2020-05-07 10:16:15 +03:00
define ('START_MICROTIME', microtime(true));
2017-09-21 09:50:14 +03:00
define ('START_MEMORY', memory_get_usage());
define ('BASE_DIR', str_replace("\\", "/", dirname(__FILE__)));
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
//-- Проверяем уставлена ли CMS
if (! @filesize(BASE_DIR . '/config/db.config.php'))
2017-06-24 00:58:56 +03:00
{
2017-09-21 09:50:14 +03:00
header ('Location:install/index.php');
2017-06-24 00:58:56 +03:00
exit;
}
2018-04-19 19:11:58 +03:00
//-- Если в запросе пришел вызов thumbnail
//-- подключаем файл обработки thumbnail
2017-06-24 00:58:56 +03:00
if (! empty($_REQUEST['thumb']))
{
2017-09-21 09:50:14 +03:00
require (BASE_DIR . '/inc/thumb.php');
2017-06-24 00:58:56 +03:00
exit;
}
ob_start();
2018-04-19 19:11:58 +03:00
//-- Подключаем файл определения мобильных устройств
2020-05-07 10:16:15 +03:00
//-- далее пользуемся $MobileDetect
2017-09-21 09:50:14 +03:00
require_once (BASE_DIR . '/lib/mobile_detect/Mobile_Detect.php');
2020-05-07 10:16:15 +03:00
$MobileDetect = new Mobile_Detect;
2020-08-25 15:55:10 +03:00
$init_start = microtime();
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
//-- Подключаем файл инициализации
2017-09-21 09:50:14 +03:00
require (BASE_DIR . '/inc/init.php');
2017-06-24 00:58:56 +03:00
2020-05-07 10:16:15 +03:00
$GLOBALS['block_generate']['INIT']['END'] = number_format(microtime_diff($init_start, microtime()), 3, ',', ' ') . ' sec';
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
//-- Проверяем нет ли в запросе папки UPLOADS_DIR
//-- подключаем файл для работы thumbsnail
2017-09-21 09:50:14 +03:00
if (strpos ($_SERVER['REQUEST_URI'], ABS_PATH . UPLOAD_DIR . '/') === 0)
2017-06-24 00:58:56 +03:00
{
2017-09-21 09:50:14 +03:00
require (BASE_DIR . '/inc/thumb.php');
2017-06-24 00:58:56 +03:00
exit;
}
2018-04-19 19:11:58 +03:00
//-- Папка с шаблонами для Smarty
2017-06-24 00:58:56 +03:00
$AVE_Template = new AVE_Template(BASE_DIR . '/templates/');
2018-04-19 19:11:58 +03:00
//-- Подключаем ядро системы
2017-09-21 09:50:14 +03:00
require (BASE_DIR . '/class/class.core.php');
2020-08-25 15:55:10 +03:00
2017-06-24 00:58:56 +03:00
$AVE_Core = new AVE_Core;
2018-04-19 19:11:58 +03:00
//-- Проверям на вызов внешних модулей и системных блоков
if (
empty ($_REQUEST['module'])
||
empty ($_REQUEST['sysblock'])
||
empty ($_REQUEST['request'])
)
2017-06-24 00:58:56 +03:00
$AVE_Core->coreUrlParse($_SERVER['REQUEST_URI']);
2020-08-25 15:55:10 +03:00
$GLOBALS['page_id'] = [(isset($_REQUEST['id'])
2017-06-24 00:58:56 +03:00
? $_REQUEST['id']
: '')
2020-08-25 15:55:10 +03:00
=> ['page' => floatval(0)]];
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
//-- Если пришел вызов на показ ревизии документа
2017-06-24 00:58:56 +03:00
if (! empty($_REQUEST['revission']))
{
2020-05-07 10:16:15 +03:00
$sql = "
2017-06-24 00:58:56 +03:00
SELECT
doc_data
FROM
" . PREFIX . "_document_rev
WHERE
doc_id = '" . (int)$_REQUEST['id'] . "'
AND
doc_revision = '" . (int)$_REQUEST['revission'] . "'
LIMIT 1
2020-05-07 10:16:15 +03:00
";
$res = $AVE_DB->Query($sql)->GetCell();
2017-06-24 00:58:56 +03:00
$res = @unserialize($res);
$flds = get_document_fields((int)$_REQUEST['id'], $res);
}
2018-04-19 19:11:58 +03:00
//-- Собираем страницу
2017-06-24 00:58:56 +03:00
$AVE_Core->coreSiteFetch(get_current_document_id());
2020-05-07 10:16:15 +03:00
Debug::startTime('CONTENT');
2017-06-24 00:58:56 +03:00
$content = ob_get_clean();
2018-05-23 19:32:14 +03:00
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && (defined('GZIP_COMPRESSION') && GZIP_COMPRESSION))
2017-09-21 09:50:14 +03:00
ob_start('ob_gzhandler');
else
ob_start();
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
eval (' '.'?>' . $content . '<?'.'php ');
2017-06-24 00:58:56 +03:00
$render = ob_get_clean();
2017-09-21 09:50:14 +03:00
unset ($content);
2017-06-24 00:58:56 +03:00
2020-07-30 16:49:44 +03:00
Registry::clean();
2018-04-19 19:11:58 +03:00
//-- Ловим 404 ошибку
2017-06-24 00:58:56 +03:00
if (isset($_REQUEST['id']) AND ($_REQUEST['id']) == PAGE_NOT_FOUND_ID)
{
report404();
2017-09-21 09:50:14 +03:00
header ($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true);
2017-06-24 00:58:56 +03:00
}
2018-04-19 19:11:58 +03:00
//-- Постраничка
2017-06-24 00:58:56 +03:00
if (
empty($_REQUEST['module']) &&
(
(
isset($_REQUEST['page'])
&& is_numeric($_REQUEST['page'])
&& ($_REQUEST['page'] < 2 OR ($_REQUEST['page'] > @$GLOBALS['page_id'][$_REQUEST['id']]['page']))
)
OR
(
isset($_REQUEST['apage'])
&& is_numeric($_REQUEST['apage'])
&& ($_REQUEST['apage'] < 2 OR ($_REQUEST['apage'] > @$GLOBALS['page_id'][$_REQUEST['id']]['apage']))
)
OR
(
isset($_REQUEST['artpage'])
&& is_numeric($_REQUEST['artpage'])
&& ($_REQUEST['artpage'] < 2 OR ($_REQUEST['artpage'] > @$GLOBALS['page_id'][$_REQUEST['id']]['artpage']))
)
)
)
{
if ($_REQUEST['id'] == 1)
2017-09-21 09:50:14 +03:00
header ('Location:' . ABS_PATH);
2017-06-24 00:58:56 +03:00
else
2017-09-21 09:50:14 +03:00
header ('Location:' . ABS_PATH . $AVE_Core->curentdoc->document_alias . URL_SUFF);
2017-06-24 00:58:56 +03:00
exit;
}
2018-04-19 19:11:58 +03:00
//-- Тут заменяем [tag:rubheader]
//-- на собранный $GLOBALS["user_header"]
2017-09-21 09:50:14 +03:00
$rubheader = (empty($GLOBALS['user_header'])
? ''
: implode(chr(10), $GLOBALS['user_header']));
2017-06-24 00:58:56 +03:00
2018-04-19 19:11:58 +03:00
//-- Тут заменяем [tag:rubfooter]
//-- на собранный $GLOBALS["user_footer"]
2018-03-26 10:33:20 +03:00
$rubfooter = (empty($GLOBALS['user_footer'])
? ''
: implode(chr(10), $GLOBALS['user_footer']));
2020-05-07 10:16:15 +03:00
$render = str_replace(['[tag:rubheader]', '[tag:rubfooter]'], [$rubheader, $rubfooter], $render);
2018-03-26 10:33:20 +03:00
unset ($rubheader, $rubfooter);
2020-05-07 10:16:15 +03:00
$GLOBALS['block_generate']['DOCUMENT']['CONTENT'] = Debug::endTime('CONTENT');
2018-04-19 19:11:58 +03:00
//-- Вывод конечного результата
2020-08-25 15:55:10 +03:00
output_compress($render);