Files
slava.home/index.php
2025-11-07 20:53:17 +02:00

210 lines
7.9 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* @file index.php
* @brief Главный входной файл сайта, инициализация сессий, подключение конфигов, загрузка страниц и формирование HTML.
*/
/** @brief Путь к текущей директории */
$path = dirname(__FILE__) . '/';
/* if(isset($_SESSION)) { file_put_contents($path . '/error.txt', "" . PHP_EOL, FILE_APPEND); }*/
session_start();
/** @brief Установка флага доступа для текущей сессии */
$_SESSION['access'] = true;
include_once $path . 'data/func.php';
includePluginsPhp();
SetConfig();
/** @brief Массив администраторов */
$configAdmins = adminsConfig();
/** @brief URI запроса, преобразованный в формат страницы */
$REQUEST_URI = $_SERVER['REQUEST_URI'] === '/' ? GetRequestURL('/index.html')['str'] : GetRequestURL($_SERVER['REQUEST_URI'])['str'];
/** @brief Текущий язык сайта */
$config['lng'] = SetLanguage();
/** @brief Результат функции URLstr для текущей страницы */
$ansv = URLstr($path . 'data/filepath.'.$config['lng'].'.php', $REQUEST_URI);
/** @brief URL текущей страницы */
$config['page_url'] = $ansv['FileURL'];
/** @brief Оригинальный URI запроса */
$config['REQUEST_URI'] = $_SERVER['REQUEST_URI'];
if (!isset($_SESSION['page_url'])) {
$_SESSION['page_url'] = $config['page_url'];
}
$methodRpc = null;
if ($_SERVER["REQUEST_METHOD"] === "POST" && strpos($_SERVER["CONTENT_TYPE"] ?? "", "application/json") !== false) {
jsonrpcRequest();
$methodRpc = json_decode(file_get_contents("php://input"), true)["method"] ?? null;
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['handleRequestAction'])) {
handleRequest($_POST['handleRequestAction']);
}
setcookie('Login', $_SESSION['Login'] === 'true' ? 'true' : 'false', time() + 2419200, "/");
/** @brief Разрешённые действия для очистки URL страницы из сессии */
$allowed = ['loginUser', 'setLng'];
if (($_POST['handleRequestAction'] && !in_array($_POST['handleRequestAction'], $allowed)) ||
($methodRpc && !in_array($methodRpc, $allowed))) {
exit;
}
if ($_POST['handleRequestAction'] || $methodRpc) {
unset($_SESSION['page_url']);
exit;
}
$config['server'] = 'http://'.$_SERVER['HTTP_HOST'].'/';
if ($_SERVER['REQUEST_URI']=='/')
$REQUESTxURI =GetRequestURL('/index.html');
else
$REQUESTxURI =GetRequestURL($_SERVER['REQUEST_URI']);
/** @brief URI текущей страницы */
$REQUEST_URI = $REQUESTxURI['str'];
/** @brief Путь к корневой директории */
$config['path'] = $path;
/** @brief Полный URL запроса */
$config['request_url'] = $REQUEST_URI;
/** @brief Шаблон страницы */
$config['template'] = $ansv['template'];
/** @brief Название сайта */
$config['sitename'] = $ansv['sitename'];
/** @brief Заголовок страницы */
$config['title'] = $ansv['title'];
/** @brief Sitemap или структура URL */
$config['smap'] = $ansv['URLLine'];
/** @brief Подключённые плагины для страницы */
$config['page_plugins'] = $ansv['page_plugins'];
/** @brief Меню выбора языка */
$config['LngMenu'] = LngMenu();
/* if ($REQUESTxURI['act']=='edit' && $REQUESTxURI['act']!=''){ echo $editXML->saveXML(); } else{ */
/** @brief Массив элементов меню страницы */
$menu = explode(',', $ansv['page']['PageMenu']);
/** @brief Верхнее меню сайта */
$config['TopMenu'] = GetXMLMenu($ansv['XML']->index, $REQUEST_URI, $menu[0], 'h');
/** @brief Боковое меню сайта */
$config['sideMenu'] = GetSideXMLMenu($ansv['XML']->index, $REQUEST_URI, $menu[0]);
/** @brief Основное меню сайта */
$config['SiteMenu'] = GetXMLMenu($ansv['XML']->index, $REQUEST_URI, $menu[1], 'h');
/* && $config['REQUEST_URI']=='/' */
if (empty($config['TopMenu'])) {
if ($_SESSION['Login'] == 'false') {
$_SESSION['formType'] = 'log_err';
} else {
$_SESSION['formType']= 'log_on';
}
}
if (is_file($path . $config['page_url'].".page.php")) {
$xmlstr = simplexml_load_file($path . $config['page_url'].".page.php");
} else {
error405(true, $config['encoding']);
}
/* $EditPage['url'] = $path .'content/scan/index.page.php'; $EditPage['page'] = simplexml_load_file($EditPage['url']); */
/** @brief Полное название сайта с текущей страницей */
$config['sitename'] .= ' > ' . $config['title'];
/** @brief CSS-класс заголовка контента */
$config['ctitle'] = $xmlstr->content['tclass'];
/** @brief CSS-класс блока контента */
$config['cfloat'] = $xmlstr->content['bclass'];
/** @brief Права доступа текущего пользователя к странице */
$access = FindPageUser($ansv['page']['users'], $_SESSION['username']);
if ($access) {
$config['left'] = GetBlock($xmlstr->lblock->block, 'left');
$config['left'] .= getNews($xmlstr->lblock->block, 'left');
$config['left'] = "<div id='left-float'>" . $config['left'] . "</div>";
$config['right'] = GetBlock($xmlstr->rblock->block, 'right');
$config['right'] .= getNews($xmlstr->rblock->block, "right");
$config['right'] = "<div id='right-float'>" . $config['right'] . "</div>";
$center = '<div class="center-float">' . GetBlock($xmlstr->cblock->block, 'center') . '<div>';
$config['content'] = $xmlstr->content->{$config['lng']};
} else {
if ($_SESSION['log_in']) {
$xmlstr = simplexml_load_file($path . 'content/adm/user.page.php');
} else {
$xmlstr = simplexml_load_file($path . 'content/adm/access.page.php');
}
$config['left'] = '';
$config['right'] = '';
$center = '<div class="center-float">' . GetBlock($xmlstr->cblock->block, 'center') . '<div>';
$config['content'] = $xmlstr->content->$config['lng'];
}
foreach ($config as $key=>$value) if ($key!="request_url")
$config['content'] =str_replace('%'.$key.'%', $value, $config['content']);
$config['content'] =str_replace('%center%', $center, $config['content']);
$config['home'] ='index.html';
if (isset($_SESSION['username'])) {
$config['User'] = $_SESSION['username'];
} else {
$config['User'] = 'Гость';
}
setcookie('User', $config['User'], time() + 2419200, '/');
$html .= '<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">';
$html .= file_get_contents($path . 'data/top.php');
$html .= file_get_contents($path . 'template/'.$config['template'].'/page.php');
/* $html .= file_get_contents($path . 'data/foot.php'); */
$html .= '<link rel="stylesheet" href="/data/fonts/fonts.css">';
$lang = include $path . 'data/lang.php';
$lng = $_SESSION['lng'] ?? 'en';
$Js = file_get_contents($path . 'data/Basic_functions.js');
foreach ($lang[$lng] as $key => $value) {
$Js = str_replace('{{' . $key . '}}', $value, $Js);
}
$html .= '<script>' . $Js . '</script>';
$html .= loadPluginsInCenterBlock();
$html .= includePlugin(['plugin' => 'siteSettings']);
$html .= includePlugin(['plugin' => 'auth']);
/* $html .= includePlugin(['plugin' => 'editor']); */
/* $html .= includePlugin(['plugin' => 'manager']); */
/* $html .= includePlugin(['plugin' => 'site_tree']); */
/* $html .= includePlugin(['plugin' => 'pickr']); */
$html .= '<div id="news-placeholder">'.getNews($xmlstr->rblock->block, "center").'</div>';
foreach ($config as $key=>$value)if ($key!="request_url")
$html =str_replace('%'.$key.'%', $value, $html);
header('Content-type: text/html; charset='. $config['encoding']);
echo $html;
/* var_dump($REQUEST_URI); echo password_hash("gena", PASSWORD_DEFAULT); //a004b486e740bb4580a04125975893b0 gettype( } */
?>