<?php

	/**
	 * AVE.cms
	 *
	 * @package AVE.cms
	 * @version 3.x
	 * @filesource
	 * @copyright © 2007-2016 AVE.cms, http://www.ave-cms.ru
	 *
	 * @license GPL v.2
	 */

	define ('START_MICROTIME', microtime());
	define ('START_MEMORY', memory_get_usage());
	define ('BASE_DIR', str_replace("\\", "/", dirname(__FILE__)));

	//-- Проверяем уставлена ли CMS
	if (! @filesize(BASE_DIR . '/config/db.config.php'))
	{
		header ('Location:install/index.php');
		exit;
	}

	//-- Если в запросе пришел вызов thumbnail
	//-- подключаем файл обработки thumbnail
	if (! empty($_REQUEST['thumb']))
	{
		require (BASE_DIR . '/inc/thumb.php');
		exit;
	}

	ob_start();

	//-- Подключаем файл определения мобильных устройств
	//-- далее пользуемся $MDetect
	require_once (BASE_DIR . '/lib/mobile_detect/Mobile_Detect.php');
	$MDetect = new Mobile_Detect;

	//-- Подключаем файл инициализации
	require (BASE_DIR . '/inc/init.php');

	unset ($GLOBALS['CMS_CONFIG']);

	//-- Проверяем нет ли в запросе папки UPLOADS_DIR
	//-- подключаем файл для работы thumbsnail
	if (strpos ($_SERVER['REQUEST_URI'], ABS_PATH . UPLOAD_DIR . '/') === 0)
	{
		require (BASE_DIR . '/inc/thumb.php');
		exit;
	}

	//-- Папка с шаблонами для Smarty
	$AVE_Template = new AVE_Template(BASE_DIR . '/templates/');

	//-- Подключаем ядро системы
	require (BASE_DIR . '/class/class.core.php');
	$AVE_Core = new AVE_Core;

	//-- Проверям на вызов внешних модулей и системных блоков
	if (
		empty ($_REQUEST['module'])
		||
		empty ($_REQUEST['sysblock'])
		||
		empty ($_REQUEST['request'])
	)
		$AVE_Core->coreUrlParse($_SERVER['REQUEST_URI']);

	$GLOBALS['page_id'] = array((isset($_REQUEST['id'])
		? $_REQUEST['id']
		: '')
			=> array('page' => floatval(0)));

	//-- Если пришел вызов на показ ревизии документа
	if (! empty($_REQUEST['revission']))
	{
		$res =	$AVE_DB->Query("
			SELECT
				doc_data
			FROM
				" . PREFIX . "_document_rev
			WHERE
				doc_id = '" . (int)$_REQUEST['id'] . "'
			AND
				doc_revision = '" . (int)$_REQUEST['revission'] . "'
			LIMIT 1
		")->GetCell();

		$res =	@unserialize($res);

		$flds =	get_document_fields((int)$_REQUEST['id'], $res);
	}

	//-- Собираем страницу
	$AVE_Core->coreSiteFetch(get_current_document_id());

	$content = ob_get_clean();

	if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') && (defined('GZIP_COMPRESSION') && GZIP_COMPRESSION))
		ob_start('ob_gzhandler');
	else
		ob_start();

	eval (' '.'?>' . $content . '<?'.'php ');

	$render = ob_get_clean();

	unset ($content);

	//-- Ловим 404 ошибку
	if (isset($_REQUEST['id']) AND ($_REQUEST['id']) == PAGE_NOT_FOUND_ID)
	{
		report404();
		header ($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found', true);
	}

	//-- Постраничка
	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)
			header ('Location:' . ABS_PATH);
		else
			header ('Location:' . ABS_PATH . $AVE_Core->curentdoc->document_alias . URL_SUFF);
		exit;
	}

	//-- Тут заменяем [tag:rubheader]
	//-- на собранный $GLOBALS["user_header"]
	$rubheader = (empty($GLOBALS['user_header'])
		? ''
		: implode(chr(10), $GLOBALS['user_header']));

	$render = str_replace('[tag:rubheader]', $rubheader, $render);

	//-- Тут заменяем [tag:rubfooter]
	//-- на собранный $GLOBALS["user_footer"]
	$rubfooter = (empty($GLOBALS['user_footer'])
		? ''
		: implode(chr(10), $GLOBALS['user_footer']));

	$render = str_replace('[tag:rubfooter]', $rubfooter, $render);

	unset ($rubheader, $rubfooter);

	//-- Вывод конечного результата
	output_compress($render);
?>