Файл admin.main.php в Cotonti CMF
Он является основным элементом для генерации страниц админки, является ключевым для управления административной частью интерфейса системы и взаимодействует с различными модулями и плагинами для отображения информации и выполнения администрирования.
Основное назначение и место в системе:
Файл admin.main.php является частью административной панели в системе управления контентом Cotonti CMF. Этот файл управляет отображением основной страницы админ-панели и загружается для обработки запросов, связанных с настройками и управлением системой.
-
Основное назначение: Файл отвечает за:
- Проверку прав доступа.
- Формирование заголовков страницы.
- Вывод контента административной панели.
- Интеграцию с плагинами для расширяемости.
-
Место в системе: Этот файл является ключевым для управления административной частью интерфейса системы и взаимодействует с различными модулями и плагинами для отображения информации и выполнения администрирования. Он является основным элементом для генерации страниц админки.
Суть содержания кода:
-
Проверка прав доступа:
- Проверяется, имеет ли текущий пользователь права на доступ к административной панели с помощью функции
cot_auth(), и блокируется доступ, если права не разрешены.
- Проверяется, имеет ли текущий пользователь права на доступ к административной панели с помощью функции
-
Загрузка и подключение плагинов:
- Код включает и подключает дополнительные файлы плагинов с помощью
cot_getextplugins(). Это позволяет расширить функциональность административной панели сторонними модулями.
- Код включает и подключает дополнительные файлы плагинов с помощью
-
Определение параметров и инициализация переменных:
- Код инициализирует переменные для управления навигацией, заголовками и контентом страницы.
- Используются глобальные переменные Cot::$usr для получения информации о пользователе и Cot::$L для локализации.
-
Маршрутизация и обработка контроллеров:
- Используется класс
Router, который управляет маршрутизацией запросов, обрабатывая различные действия на странице админки. Проверяется, если запрашивается расширение, то загружается соответствующий контроллер и его действия.
- Используется класс
-
Режим совместимости (Legacy Mode):
- Есть поддержка устаревших версий Cotonti для обеспечения совместимости с предыдущими версиями системы, что позволяет избежать сломанных функций при обновлениях.
-
Формирование заголовков:
- Файл формирует основной заголовок страницы с учетом информации, переданной через
$adminTitleи других параметров.
- Файл формирует основной заголовок страницы с учетом информации, переданной через
-
Работа с шаблонами:
- Используется объект
XTemplateдля загрузки и обработки шаблонов. На основе этого создаются HTML-страницы для вывода в браузер.
- Используется объект
-
Вывод данных:
- В шаблон передаются данные для отображения: хлебные крошки, заголовок, основной контент и помощь.
-
Обработка AJAX:
- Для страницы предусмотрена обработка AJAX-запросов, что позволяет динамично обновлять содержимое страницы без полной перезагрузки.
Список функций/методов:
-
cot_auth():- Проверяет права доступа пользователя для конкретной части админ-панели. В данном контексте она используется для получения прав на просмотр и редактирование данных на странице.
-
cot_block():- Блокирует дальнейшее выполнение кода, если не выполнены необходимые условия доступа (например, если пользователь не имеет прав на чтение).
-
cot_getextplugins():- Возвращает список плагинов, подключаемых к системе для расширения функциональности. Это позволяет динамически добавлять дополнительные возможности в административный интерфейс.
-
Router::getInstance()->routeAdmin():- Получает текущий маршрут для администрирования с использованием системы маршрутизации. Она определяет, какой контроллер и действия необходимо выполнить для данного запроса.
-
cot_title():- Формирует полный заголовок страницы с учетом переданных параметров.
-
cot_breadcrumbs():- Формирует хлебные крошки для навигации по административной панели, что помогает пользователю ориентироваться в структуре интерфейса.
-
cot_tplfile():- Загружает шаблон для текущего модуля. Используется для отображения административной страницы.
-
XTemplate->assign():- Присваивает переменные шаблона, которые затем будут использованы для отображения данных в HTML.
-
XTemplate->parse():- Обрабатывает шаблон и формирует его финальное представление.
-
XTemplate->out():- Выводит содержимое шаблона в HTML-страницу.
-
require_once:- Подключает необходимые файлы, такие как заголовок и футер, для корректного отображения страницы.
Классы, с которыми взаимодействует:
Router:- Этот класс используется для обработки маршрутов админ-панели. Он управляет тем, какой контроллер и действие будут выполнены в зависимости от запроса.
- Взаимодействует с методом
getInstance(), который создает или возвращает существующий экземпляр класса маршрутизатора.
XTemplate:- Класс шаблонов, с помощью которого происходит привязка данных к шаблону и их дальнейший вывод в HTML.
Характеристика стиля PHP:
-
Использование глобальных переменных:
- Применяются глобальные переменные, такие как
Cot::$usr,Cot::$cfg, иCot::$out, что является характерной чертой стиля фреймворка Cotonti. Это позволяет централизованно управлять настройками и данными.
- Применяются глобальные переменные, такие как
-
Использование ООП (Объектно-Ориентированного Программирования):
- В коде используются классы, такие как
RouterиXTemplate, что демонстрирует переход на объектно-ориентированный стиль, позволяя инкапсулировать логику и работать с объектами.
- В коде используются классы, такие как
-
Модульность:
- Код активно использует хуки (например,
cot_getextplugins()), что позволяет расширять функциональность без изменения основного кода, следуя принципам модульности и гибкости.
- Код активно использует хуки (например,
-
Чистота и структурированность кода:
- Код написан с явным разделением логики и представления, что позволяет легко модифицировать и расширять систему, особенно за счет использования шаблонов и плагинов.
В целом, файл admin.main.php в Cotonti выполняет ключевую роль в организации работы административной панели и является примером гибкой и расширяемой системы с использованием объектов и плагинов для различных административных действий.
находится по адресу: /system/admin/admin.main.php движка php-фреймворка Cotonti.
<?php
/**
* Панель администратора
*
* @package Cotonti
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
use cot\router\Router; // Подключение класса Router для обработки маршрутов
(defined('COT_CODE') && defined('COT_ADMIN')) or die('Wrong URL.'); // Проверка правильности URL для защиты от несанкционированного доступа
list(Cot::$usr['auth_read'], Cot::$usr['auth_write'], Cot::$usr['isadmin']) = cot_auth('admin', 'any'); // Получение прав доступа пользователя на чтение, запись и администрирование
cot_block(Cot::$usr['auth_read']); // Блокировка доступа, если нет прав на чтение
$enabled[0] = Cot::$L['Disabled']; // Массив для обозначения состояния "выключено"
$enabled[1] = Cot::$L['Enabled']; // Массив для обозначения состояния "включено"
$id = cot_import('id', 'G', 'TXT'); // Получение параметра 'id' из глобальных GET данных
$po = cot_import('po', 'G', 'TXT'); // Получение параметра 'po' из глобальных GET данных
$c = cot_import('c', 'G', 'TXT'); // Получение параметра 'c' из глобальных GET данных
$p = cot_import('p', 'G', 'TXT'); // Получение параметра 'p' из глобальных GET данных
$l = cot_import('l', 'G', 'TXT'); // Получение параметра 'l' из глобальных GET данных
$o = cot_import('o', 'P', 'TXT'); // Получение параметра 'o' из глобальных POST данных
$w = cot_import('w', 'P', 'TXT'); // Получение параметра 'w' из глобальных POST данных
$u = cot_import('u', 'P', 'TXT'); // Получение параметра 'u' из глобальных POST данных
$s = cot_import('s', 'G', 'ALP', 24); // Получение параметра 's' из глобальных GET данных, ожидается строка из алфавита длиной 24 символа
$adminPath = [[cot_url('admin'), Cot::$L['Adminpanel']]]; // Массив для пути навигации, включает ссылку на панель администратора
$adminTitle = ''; // Инициализация переменной для заголовка страницы
$adminHelp = ''; // Инициализация переменной для помощи на странице
$adminMain = ''; // Инициализация переменной для основного контента страницы
/* === Hook для плагинов === */
foreach (cot_getextplugins('admin.main') as $pl) { // Для каждого плагина, подключаемого в админпанель
include $pl; // Подключение плагина
}
/* ===== */
$route = Router::getInstance()->routeAdmin(); // Получение маршрута для админ-панели через объект Router
if (!empty($route->extensionCode)) { // Если существует код расширения для маршрута
// Проверка прав на администрирование для указанного расширения
list(Cot::$usr['auth_read'], Cot::$usr['auth_write'], Cot::$usr['isadmin'])
= cot_auth($route->extensionCode, 'any'); // Получение прав доступа для расширения
cot_block(Cot::$usr['isadmin']); // Блокировка доступа, если нет прав администратора
$adminTitle = $cot_modules[$route->extensionCode]['title'] ?? ''; // Установка заголовка страницы в зависимости от расширения
}
if (!empty($route->includeFiles)) { // Если указаны файлы для подключения
foreach ($route->includeFiles as $includeFile) { // Для каждого файла в списке
require_once $includeFile; // Подключение файла
}
} elseif ($route->controller !== null && $route->action !== null) { // Если контроллер и действие не пустые
$adminMain = $route->controller->runAction($route->action); // Выполнение действия контроллера для маршрута
}
unset($route); // Очистка переменной маршрута
Объяснение кода:
- Основное назначение: Этот файл управляет админ-панелью и обработкой различных маршрутов, связанных с администрированием в системе Cotonti.
- Основные действия:
- Получение и проверка прав доступа для администраторов.
- Инциализация и обработка GET и POST данных.
- Подключение плагинов для панели управления.
- Определение маршрута для админ-панели с помощью класса
Router. - Включение соответствующих файлов и выполнение действий контроллеров для обработанных маршрутов.
if (isset(Cot::$cfg['legacyMode']) && Cot::$cfg['legacyMode']) { // Если включен режим совместимости с устаревшими версиями
// @deprecated in 0.9.24 (for backward compatibility)
if (!empty($adminhelp)) { // Если переменная $adminhelp не пуста
$adminHelp = $adminhelp; // Присваиваем $adminHelp значение из $adminhelp
}
if (!empty($adminmain)) { // Если переменная $adminmain не пуста
$adminMain = $adminmain; // Присваиваем $adminMain значение из $adminmain
}
if (!empty($adminpath)) { // Если переменная $adminpath не пуста
$adminPath = $adminpath; // Присваиваем $adminPath значение из $adminpath
}
}
$titleParams = [ // Массив параметров для заголовка страницы
'ADMIN' => Cot::$L['Administration'], // Название раздела администрирования
'SUBTITLE' => $adminTitle, // Подзаголовок страницы
];
if (!isset(Cot::$out['head'] )) { // Если в выводе нет заголовка
Cot::$out['head'] = ''; // Инициализируем переменную заголовка
}
Cot::$out['head'] .= Cot::$R['code_noindex']; // Добавляем мета-тег noindex в заголовок страницы для предотвращения индексации
Cot::$out['subtitle'] = empty($adminTitle) // Если переменная $adminTitle пуста
? cot_title('{ADMIN}', $titleParams) // Заголовок по умолчанию
: cot_title('{SUBTITLE} - {ADMIN}', $titleParams); // Заголовок с подзаголовком
require_once Cot::$cfg['system_dir'] . '/header.php'; // Подключение файла заголовка страницы
$t = new XTemplate(cot_tplfile('admin', 'core')); // Создание нового объекта шаблона с файлом 'admin' для админ-панели
$t->assign([ // Присваиваем переменным шаблона значения
'ADMIN_BREADCRUMBS' => cot_breadcrumbs($adminPath, false), // Хлебные крошки для навигации
'ADMIN_TITLE' => $adminTitle, // Заголовок страницы
'ADMIN_MAIN' => $adminMain, // Основной контент страницы
'ADMIN_HELP' => $adminHelp, // Текст помощи для администратора
]);
/* === Hook для плагинов === */
foreach (cot_getextplugins('admin.tags') as $pl) { // Для каждого плагина в 'admin.tags'
include $pl; // Подключение плагина
}
/* ===== */
$t->parse('MAIN.BODY'); // Парсим основной контент
if (!COT_AJAX) { // Если не выполняется AJAX-запрос
$t->parse('MAIN'); // Парсим всю страницу
$t->out('MAIN'); // Выводим содержимое основной части
} else { // Если это AJAX-запрос
$t->out('MAIN.BODY'); // Выводим только основное тело страницы
}
require_once Cot::$cfg['system_dir'] . '/footer.php'; // Подключение файла футера страницы
Объяснение кода:
- Основное назначение: Этот код отвечает за построение и отображение страницы админ-панели, включая обработку параметров, подключение плагинов, а также управление контентом страницы.
- Основные действия:
- Проверка и обработка параметров, связанных с режимом совместимости с устаревшими версиями.
- Формирование заголовка и подзаголовка страницы.
- Подключение и вывод основной части страницы с использованием шаблона.
- Обработка AJAX-запросов для динамичного обновления контента без перезагрузки страницы.
- Подключение файлов заголовка и футера для правильного отображения страницы.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 03.08.2026 13:51
- Страница размещена: 28.01.2025 18:28
- Последнее обновление: 28.01.2025 18:28