Файл admin.home.php в Cotonti CMF

Файл admin.home.php в движке Cotonti CMF является основным компонентом страницы домашней панели администратора. Этот файл отвечает за отображение информации и управленческих функций на главной странице административной части сайта. Рассмотрим основные задачи и условия, которые он выполняет.

Основное назначение:

  • Главная страница панели администратора: Этот файл загружает и отображает информацию о состоянии системы для администраторов, такую как данные о версиях движка, информацию о доступных обновлениях и другую полезную информацию для администрирования.
  • Обработка плагинов и хуков: Он также управляет интеграцией с расширениями и плагинами, которые могут добавлять собственные элементы на страницу администрирования, такие как панели инструментов и другие функциональные блоки.
  • Интерфейс обновлений: Файл контролирует получение и отображение информации об обновлениях для Cotonti, показывая, если новая версия доступна, и предоставляет информацию о её содержимом.

Задачи и условия, которые выполняет код:

  1. Проверка наличия файла установки: В начале работы файл проверяет, не оставлен ли файл install.php на сервере, и если таковой имеется, выдаёт ошибку, чтобы напомнить администратору о необходимости удалить его для повышения безопасности.

  2. Проверка обновлений:

    • Если в настройках включена проверка обновлений, файл подключает кеш, если он не был ранее загружен.
    • Он выполняет запросы к серверу Cotonti для получения информации о доступных обновлениях, используя как file_get_contents, так и cURL для получения данных.
    • Если обновление доступно, информация об этом будет отображена на панели администратора, и будет показано сообщение о версии обновления.
  3. Использование хуков для расширений:

    • Файл подключает различные хуки для расширений, такие как admin.home.mainpanel, admin.home.sidepanel и общий хук admin.home.
    • Эти хуки позволяют плагинам и модулям добавлять свои блоки на страницу главной панели, например, элементы для отображения дополнительной статистики или пользовательских данных.
  4. Отображение информации о системе:

    • Код включает вызов функции cot_generate_infotags, которая генерирует информацию о состоянии базы данных, таких как количество строк в таблицах, размер индексов и данных, количество установленных плагинов и версию базы данных.
    • Это позволяет администратору видеть текущее состояние системы, что полезно для принятия решений по её обслуживанию и улучшению.
  5. Отображение сообщений: В конце работы файл вызывает функцию cot_display_messages, которая отображает различные сообщения, такие как уведомления о событиях, предупреждения или ошибки, если таковые имеются.

Характеристика стиля PHP:

  • Объектно-ориентированный подход: Код активно использует объекты, такие как экземпляры классов XTemplate, Cache и другие. Это позволяет организовать более чистую и модульную структуру.
  • Использование глобальных переменных: Некоторые переменные и объекты, такие как $t (шаблонный объект) и $cfg (конфигурационные параметры), используются как глобальные для упрощения доступа к важной информации по всему коду.
  • Хуки и расширения: Это важная особенность Cotonti — система хуков позволяет расширять функциональность без необходимости изменять основной код. Использование хуков позволяет разработчикам подключать свои плагины к различным частям системы.

Заключение:

admin.home.php является важной частью админ-панели в Cotonti, предоставляя администраторам основную информацию о системе, а также интеграцию с расширениями и плагинами. Он служит связующим звеном для отображения обновлений, статуса системы и получения дополнительных данных через хуки, поддерживая при этом совместимость с более старой версией интерфейса.

 

находится по адресу: /system/admin/admin.home.php движка php-фреймворка Cotonti.

 

 

/**
 * Панель администратора - Главная страница для администраторов
 *
 * @package Cotonti
 * @copyright (c) Cotonti Team
 * @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
 */
(defined('COT_CODE') && defined('COT_ADMIN')) or die('Wrong URL.'); // Проверка, что код был вызван с правильными параметрами: COT_CODE и COT_ADMIN

$t = new XTemplate(cot_tplfile('admin.home', 'core')); // Создание объекта XTemplate для шаблона главной страницы панели администратора

if (!Cot::$cfg['debug_mode'] && file_exists('install.php') && is_writable('datas/config.php')) { // Если не включен режим отладки, существует файл install.php и файл config.php доступен для записи
	cot_error('home_remove_install'); // Выводит ошибку "home_remove_install"
}

$adminTitle = $L['Adminpanel']; // Устанавливает заголовок страницы панели администратора

 

//Проверка версии
if (Cot::$cfg['check_updates']) { // Если в конфигурации включена проверка обновлений
	if (!Cot::$cache) { // Если кэш не существует
		require_once !empty($cfg['custom_cache']) ? $cfg['custom_cache'] : $cfg['system_dir'] . '/cache.php'; // Подключаем файл кэша, если он указан, или используем стандартный путь
		$cache = new Cache(); // Создаём объект кэша
		$cache->init(); // Инициализируем кэш
	}
	$updateInfo = Cot::$cache->db->get('update_info'); // Получаем информацию об обновлениях из кэша

	if (empty($updateInfo)) { // Если информация об обновлениях пустая
        $url = 'https://www.cotonti.com/index.php?r=updatecheck'; // Устанавливаем URL для проверки обновлений
        $userAgent = 'Cotonti v.' . cot::$cfg['version']; // Устанавливаем User-Agent с версией Cotonti

		if (ini_get('allow_url_fopen')) { // Если разрешено использование URL fopen
            $updateInfo = @file_get_contents($url, false, stream_context_create([ // Получаем данные об обновлении с удалённого сервера
                    'http' => ['method' => "GET", 'header' => 'User-Agent: ' . $userAgent]
                ])
            );
        }
        if (empty($updateInfo) && function_exists('curl_init')) { // Если информация всё ещё пустая и доступна функция cURL
			$curl = curl_init(); // Инициализируем cURL
            curl_setopt($curl, CURLOPT_URL, $url); // Устанавливаем URL для cURL
            curl_setopt($curl, CURLOPT_USERAGENT, $userAgent); // Устанавливаем User-Agent для cURL
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE); // Устанавливаем параметр возврата данных
            $updateInfo = curl_exec($curl); // Выполняем запрос и получаем данные
			curl_close($curl); // Закрываем соединение cURL
		}
        if ($updateInfo) { // Если информация получена
            $updateInfo = json_decode($updateInfo, TRUE); // Декодируем JSON-данные в массив
        }
        if (empty($updateInfo)) { // Если информация всё ещё пустая
            // Отрицательный результат также кэшируется
            $updateInfo = 'a'; // Устанавливаем флаг ошибки
            cot_log('Error getting update info from cotonti.com', 'adm', 'update', 'error'); // Логируем ошибку
        }
        Cot::$cache->db->store('update_info', $updateInfo, COT_DEFAULT_REALM, 86400); // Сохраняем информацию в кэш на 24 часа
	}
	if (
        !empty($updateInfo) // Если информация об обновлениях существует
        && $updateInfo != 'a' // И она не равна флагу ошибки
        && version_compare($updateInfo['update_ver'], Cot::$cfg['version'], '>') // Если новая версия больше текущей
    ) {
		$updateInfo_message = $updateInfo['update_message'];// Совместимость с устаревшей версией плагина
		if (is_array($updateInfo['update_message_lng'])) { // Если сообщения об обновлениях локализованы
			if (isset($updateInfo['update_message_lng'][$usr['lang']])) { // Если для текущего языка есть сообщение
				$updateInfo_message = $updateInfo['update_message_lng'][Cot::$usr['lang']]; // Используем сообщение для текущего языка
			} elseif (
                Cot::$usr['lang'] != Cot::$cfg['defaultlang']
                && isset($updateInfo['update_message_lng'][Cot::$cfg['defaultlang']])
            ) {
				$updateInfo_message = $updateInfo['update_message_lng'][Cot::$cfg['defaultlang']]; // Используем сообщение для языка по умолчанию
			} elseif (isset($updateInfo['update_message_lng']['en'])) { // Если есть сообщение на английском
				$updateInfo_message = $updateInfo['update_message_lng']['en']; // Используем английское сообщение
			}
		}
		$t->assign(array( // Присваиваем переменные шаблону
			'ADMIN_HOME_UPDATE_REVISION' => sprintf(
                Cot::$L['home_update_revision'],
                Cot::$cfg['version'],
                htmlspecialchars($updateInfo['update_ver']) // Отображаем сообщение о новой версии
            ),
			'ADMIN_HOME_UPDATE_MESSAGE' => cot_parse($updateInfo_message), // Отображаем текст сообщения
		));
		$t->parse('MAIN.UPDATE'); // Парсим блок обновлений в шаблоне

		cot_log(
            'Getting update info - can get new version from cotonti.com', // Логируем успешную проверку обновлений
            'adm',
            'update', 'info'
        );
	}
}

 

//Устаревший код для совместимости с предыдущими версиями. Будет удалён в будущем
$t->assign(cot_generate_infotags('ADMIN_HOME_')); // Присваиваем переменные информации о системе для отображения на главной панели администратора

/* === Hook === */
foreach (cot_getextplugins('admin.home.mainpanel') as $pl) { // Для каждого плагина, подключённого к хуку 'admin.home.mainpanel'
	$line = ''; // Инициализируем переменную для содержимого
	include $pl; // Включаем плагин
	if (!empty($line)) { // Если плагин сгенерировал содержимое
		$t->assign('ADMIN_HOME_MAINPANEL', $line); // Присваиваем содержимое переменной для главной панели
		$t->parse('MAIN.MAINPANEL'); // Парсим блок главной панели в шаблоне
	}
}
/* ===== */

/* === Hook === */
foreach (cot_getextplugins('admin.home.sidepanel') as $pl) { // Для каждого плагина, подключённого к хуку 'admin.home.sidepanel'
	$line = ''; // Инициализируем переменную для содержимого
	include $pl; // Включаем плагин
	if (!empty($line)) { // Если плагин сгенерировал содержимое
		$t->assign('ADMIN_HOME_SIDEPANEL', $line); // Присваиваем содержимое переменной для боковой панели
		$t->parse('MAIN.SIDEPANEL'); // Парсим блок боковой панели в шаблоне
	}
}
/* ===== */

/* === Hook === */
foreach (cot_getextplugins('admin.home') as $pl) { // Для каждого плагина, подключённого к хуку 'admin.home'
	include $pl; // Включаем плагин
}
/* ===== */

cot_display_messages($t); // Отображаем сообщения (ошибки, уведомления и т.д.)

$t->parse('MAIN'); // Парсим главный блок шаблона
$adminMain = $t->text('MAIN'); // Сохраняем итоговый результат в переменной для дальнейшего использования

 

 

6 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 28.01.2025 18:02
  • Последнее обновление: 28.01.2025 18:02

Похожие страницы

Файл admin.cache.disk.php в Cotonti CMF
1 Файл admin.cache.disk.php в движке Cotonti CMF является частью административной панели, предназначенной для управления
Файл admin.config.php в Cotonti CMF
2 Основное назначение файла и его место в системе Файл admin.config.php является частью административной панели системы
Файл admin.extensions.php в Cotonti CMF
3 Файл "admin.extensions.php" в движке Cotonti CMF является важным компонентом административной части системы,
Файл admin.extrafields.php в Cotonti CMF
4 Файл admin.extrafields.php в движке Cotonti CMF предназначен для управления дополнительными полями (extra fields) в
Файл admin.functions.php в Cotonti CMF
5 Основное назначение файла admin.functions.php и его место в системе Файл admin.functions.php в системе Cotonti CMF