Файл admin.cache.php в Cotonti

Основное назначение файла:

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

Суть содержания кода:

  1. Авторизация и доступ:

    • В начале файла проверяется, что доступ к нему осуществляется через административный интерфейс и что у пользователя есть права администратора для выполнения операций с кешем.
  2. Инициализация и загрузка данных:

    • Загружается шаблон для отображения страницы администрирования кеша с помощью библиотеки XTemplate.
    • В пути навигации добавляются ссылки на текущую страницу и другие административные разделы.
  3. Работа с кешем:

    • Функции управляют кешированием данных, включая очистку кеша (по запросу), удаление отдельных кеш-записей, а также вывод информации о текущем состоянии кеша (например, о его размере, времени истечения и т. д.).
    • При этом используется класс Cache, если кеш доступен в системе, и производится подсчет размера кеша, а также отображение значений из базы данных кеша.
  4. Очистка и удаление кеша:

    • В случае очистки кеша (purge) или удаления конкретных кеш-данных (delete), проверяются права на выполнение этих действий и производится очистка кеша или удаление записей.
    • Записывается сообщение об успешном выполнении операции или ошибка.
  5. Работа с плагинами:

    • Код использует механизмы плагинов для расширения функциональности, вызывая хуки в ключевых местах (admin.cache.first, admin.cache.loop, admin.cache.tags), что позволяет сторонним разработчикам добавлять свои собственные действия или интерфейсы в административный раздел кеша.

Задачи и условия:

  • Отображение информации о кешировании: Информация о состоянии кеша и его содержимом выводится на административной панели для отслеживания использования ресурсов.
  • Очистка кеша: Возможность для администратора очистить кеш системы, что может быть полезно для обновлений или исправлений.
  • Удаление кеш-записей: Администратор может удалять отдельные записи из кеша по имени.
  • Использование памяти: Показана информация о занятой и доступной памяти для кеша.
  • Взаимодействие с плагинами: Интеграция с плагинами для гибкости расширения функционала панели управления кешем.

Методы и функции:

  1. Методы работы с кешем:

    • Функция для очистки кеша: clear (включая очистку определенных типов кеша).
    • Функция для очистки всех данных кеша: clearall.
    • Функция для удаления кеш-записи по имени: delete.
    • Функция для отображения информации о состоянии кеша в памяти.
  2. Работа с шаблонами:

    • Используется библиотека шаблонов XTemplate, чтобы динамически обновлять и отображать данные на странице.
  3. Работа с плагинами:

    • cot_getextplugins() — функция для получения плагинов, зарегистрированных на различных этапах работы с кешем.

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

  • Простой и читаемый стиль: Код написан в классическом стиле PHP с четким разделением на логические блоки (например, управление кешем, отображение данных, обработка плагинов).
  • Использование библиотек и фреймворков: Взаимодействие с классами и функциями Cotonti (например, XTemplate, cot_url, cot_check_xg) предполагает использование фреймворка, что позволяет разработчику не писать низкоуровневый код для каждой операции.
  • Безопасность и защита: В коде активно используются функции для защиты от атак, такие как проверка на валидность запросов (например, cot_check_xg для защиты от CSRF).
  • Использование хуков и плагинов: Это позволяет добавлять расширения и кастомизировать поведение административной панели кеша без изменения основного кода.

Заключение:

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

 

<?php
/**
 * Administration panel - Internal cache
 * 
 * Панель администратора - Внутренний кеш
 *
 * @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.'); 
// Проверка, что файл запрашивается через правильный URL и что это админская страница. Если условие не выполнено, завершается выполнение.

list($usr['auth_read'], $usr['auth_write'], $usr['isadmin']) = cot_auth('admin', 'a'); 
// Проверка прав доступа пользователя для данного модуля (чтение, запись, администратор).

cot_block($usr['isadmin']); 
// Проверка, что у пользователя есть права администратора, в противном случае блокируется доступ.

$t = new XTemplate(cot_tplfile('admin.cache', 'core')); 
// Инициализация шаблонизатора для панели администратора с использованием шаблона для кеша.

$adminPath[] = array(cot_url('admin', 'm=other'), $L['Other']); 
// Добавление элемента в путь навигации: ссылка на раздел "Other" в админке.

$adminPath[] = array(cot_url('admin', 'm=cache'), $L['adm_internalcache']); 
// Добавление элемента в путь навигации: ссылка на раздел "adm_internalcache" в админке.

$adminTitle = $L['adm_internalcache']; 
// Установка заголовка страницы для админки на "Internal Cache".

/* === Hook === */
foreach (cot_getextplugins('admin.cache.first') as $pl)
{
	include $pl; 
	// Включение внешних плагинов для расширения функционала на этапе "admin.cache.first".
}
/* ===== */

 

if (!$cache) { 
    // Если кеш не был найден или не инициализирован, выполняем его загрузку.
    require_once Cot::$cfg['system_dir'] . '/cache.php'; 
    // Подключаем файл, содержащий классы для работы с кешем.

    $cache = new Cache(); 
    // Создаем новый объект кеша.

    $cache->init(); 
    // Инициализируем кеш.
}

if ($a == 'purge' && $cache) { 
    // Если действие 'purge' и объект кеша существует.
    if (cot_check_xg() && $cache->clear([COT_CACHE_TYPE_DB, COT_CACHE_TYPE_MEMORY])) { 
        // Проверка X-сессии и попытка очистить кеш для базы данных и памяти.
        Cot::$db->update(Cot::$db->users, ['user_auth' => ''], "user_auth <> ''"); 
        // Обновляем таблицу пользователей, сбрасывая поле user_auth, если оно не пустое.

        cot_message('adm_purgeall_done'); 
        // Выводим сообщение о завершении очистки кеша.
    } else { 
        cot_error('Error'); 
        // В случае ошибки выводим сообщение об ошибке.
    }

} elseif ($a == 'delete') { 
    // Если действие 'delete' (удаление кеша).
    cot_check_xg(); 
    // Проверяем X-сессию.

    $name = $db->prep(cot_import('name', 'G', 'TXT')); 
    // Получаем имя кеша из GET-запроса и обрабатываем его, чтобы предотвратить инъекции.

    $db->delete($db_cache, "c_name = '$name'") ? cot_message('adm_delcacheitem') : cot_error('Error'); 
    // Если удаление кеша прошло успешно, выводим сообщение, иначе выводим ошибку.
}

 

if ($cache && $cache->mem) { 
    // Проверяем, существует ли объект кеша и поддерживает ли он кеш в памяти.
    $info = $cache->get_info(); 
    // Получаем информацию о текущем состоянии кеша.

    if ($info['available'] < 0) { 
        // Если доступный кеш меньше нуля (что может означать ошибку или неинициализированное значение).
        $info['available'] = '?'; 
        // Заменяем это значение на вопросительный знак, чтобы отобразить неизвестное количество.
    }

    $t->assign(array( 
        // Назначаем переменные для шаблона.
        'ADMIN_CACHE_MEMORY_DRIVER' => str_replace('_driver', '', $cache->mem_driver), 
        // Убираем суффикс '_driver' из названия драйвера кеша.
        'ADMIN_CACHE_MEMORY_PERCENTBAR' => ceil(($info['occupied'] / $info['max']) * 100), 
        // Рассчитываем процент использования памяти и округляем до целого числа.
        'ADMIN_CACHE_MEMORY_AVAILABLE' => $info['available'], 
        // Указываем доступное количество памяти.
        'ADMIN_CACHE_MEMORY_MAX' => $info['max'] 
        // Указываем максимальное количество памяти.
    ));

    $t->parse('MAIN.ADMIN_CACHE_MEMORY'); 
    // Парсим шаблон для отображения информации о кешировании в памяти.
}

 

$sql = $db->query("SELECT * FROM $db_cache WHERE 1 ORDER by c_name ASC"); 
// Выполняем SQL-запрос для выбора всех данных из таблицы кеша, сортируя их по имени.

$cachesize = 0; 
// Инициализируем переменную для подсчета общего размера кеша.
$ii = 0; 
// Инициализируем переменную для учета индекса строк в цикле.

$extp = cot_getextplugins('admin.cache.loop'); 
// Загружаем плагины для обработчиков цикла (если они есть).

foreach ($sql->fetchAll() as $row) { 
    // Проходим по всем результатам запроса и обрабатываем каждую строку кеша.
    
    $row['c_value'] = htmlspecialchars($row['c_value']); 
    // Преобразуем значение кеша в безопасный для вывода формат (HTML).
    
    $row['size'] = mb_strlen($row['c_value']); 
    // Вычисляем размер значения кеша, используя длину строки.

    $cachesize += $row['size']; 
    // Добавляем размер текущего значения кеша к общему размеру кеша.

    $t->assign(array( 
        // Назначаем значения для шаблона.
        'ADMIN_CACHE_ITEM_DEL_URL' => cot_url('admin', 'm=cache&a=delete&name='.$row['c_name'].'&'.cot_xg()), 
        // Формируем URL для удаления кеша по имени.
        'ADMIN_CACHE_ITEM_NAME' => $row['c_name'], 
        // Имя кеша.
        'ADMIN_CACHE_REALM' => $row['c_realm'], 
        // Указываем область (realm) кеша.
        'ADMIN_CACHE_EXPIRE' => $row['c_expire'] > 0 ? cot_date('datetime_short', $row['c_expire']) : '-', 
        // Если срок действия кеша больше нуля, отображаем дату его истечения, иначе ставим "-".
        'ADMIN_CACHE_SIZE' => $row['size'], 
        // Размер кеша.
        'ADMIN_CACHE_VALUE' => ($a == 'showall') ? $row['c_value'] : cot_cutstring($row['c_value'], 80), 
        // Если параметр 'showall', показываем все значение кеша, иначе обрезаем его до 80 символов.
        'ADMIN_CACHE_ROW_ODDEVEN' => cot_build_oddeven($ii) 
        // Генерируем четное или нечетное отображение строки для стилизации.
    ));

    foreach ($extp as $pl) { 
        // Включаем плагины для обработки данных, если они есть.
        include $pl; 
    }

    $t->parse('MAIN.ADMIN_CACHE_ROW'); 
    // Парсим текущую строку для шаблона.
    
    $ii++; 
    // Увеличиваем счетчик строк.
}

$t->assign(array( 
    // Назначаем URL для различных действий.
    'ADMIN_CACHE_URL_REFRESH' => cot_url('admin', 'm=cache'), 
    // URL для обновления кеша.
    'ADMIN_CACHE_URL_PURGE' => cot_url('admin', 'm=cache&a=purge&'.cot_xg()), 
    // URL для очистки кеша.
    'ADMIN_CACHE_URL_SHOWALL' => cot_url('admin', 'm=cache&a=showall'), 
    // URL для показа всех значений кеша.
    'ADMIN_CACHE_CACHESIZE' => $cachesize 
    // Общий размер кеша.
));

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

foreach (cot_getextplugins('admin.cache.tags') as $pl) { 
    // Включаем дополнительные плагины для тегов.
    include $pl; 
}

$t->parse('MAIN'); 
// Парсим основной шаблон.

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

 

 

 

7 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Content author

Administrator

Offline

Administrator

Last logged: 2026-07-05 18:32

  • Page published: 2025-01-28 15:38
  • Last update: 2025-01-28 15:44

Similar pages

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