<?php

# проверка ajax запроса, выдача ошибки сервера
if (!$FUNC->ajax()) { http_response_code(403); exit; }

# обработка входящей ссылки
$url = substr(URL, 5); // нарезка ссылки из полученной
$link = $FUNC->back($url, true);// преобразование ссылки
if ($link == '/' || !$FUNC->url($link)) $route = 'stop'; // ссылка неверная
else { $parts = $FUNC->parse($link); // парсинг ссылки
$route = reset($parts); } // определение текущего роутера
if (!isset($route)) $route = 'stop'; // проверка целостности массива ссылки

# обновление нижнего меню
if ($route == 'menu' || $route == 'bar') { $status = 'guest'; // статус
require_once SYS .'main/auth.php'; // авторизация
if (!isset($stop) && $route == 'menu') { // проверка ошибки, меню
require_once MODS .'wraps/act.php'; } // действие
ob_start('ob_gzhandler'); // буферизация данных
$block = ($route == 'menu') ? 'block' : 'bar'; // определение блока
require_once MODS .'wraps/'. $block .'.php'; // шаблон блока
$buffer = ob_get_clean(); // чтение данных из буфера
$body = array('body' => $buffer); // запись данных в массив
echo json_encode($body); exit; } // преобразование в json, отправка к клиенту

# данные по умолчанию
$page = 'block'; // тип запроса
$status = 'all'; // любой статус
$param = false; // начальный параметр
$params = false; // общие параметры

# выборка модуля из списка
require_once SYS .'rout/page.php';

# проверка авторизации
require_once SYS .'main/auth.php';

# страница отсутствует, показ ошибки
if (isset($stop)) { ob_start('ob_gzhandler'); // буферизация данных
require_once MODS .'error/block.php'; // шаблон ошибки
$buffer = ob_get_clean(); // чтение данных из буфера
$body = array('body' => $buffer); // запись данных в массив
echo json_encode($body); exit; } // преобразование в json, отправка к клиенту

# запись данных навигации
define('ROUT', array('folder' => $folder, 'file' => $file));

# проверка и запись параметров
if ($param || $params) define('PARAMS', $FUNC->params($parts, key($parts), $param));

# проверка, подключение действия
if (file_exists(MODS . ROUT['folder'] .'/acts/'. ROUT['file'] .'.php'))
require_once MODS . ROUT['folder'] .'/acts/'. ROUT['file'] .'.php';

# проверка, подключение шаблона
if (file_exists(MODS . ROUT['folder'] .'/blocks/'. ROUT['file'] .'.php')) { // проверка наличия шаблона
ob_start('ob_gzhandler'); header('Content-Type: text/html; charset=UTF-8'); // буферизация, тип, кодировка
require_once MODS . ROUT['folder'] .'/blocks/'.  ROUT['file'] .'.php'; //шаблон
$buffer = ob_get_clean(); $body = array('body' => $buffer); // запись данных в массив
echo json_encode($body); exit; } // преобразование в json, отправка к клиенту

?>