Файл "page.trashcan.php" в системе Cotonti CMF отвечает за реализацию логики работы с корзиной для страниц в рамках модуля Page. Этот файл используется для поддержки операций с удалением и восстановлением страниц на сайте через функциональность корзины. Он играет важную роль в обеспечении функционала, который позволяет восстановить страницы после их удаления и синхронизировать различные аспекты сайта после таких операций.
1. Основное назначение и место в системе Cotonti
Этот файл находится в каталоге /modules/page/ и является частью модуля Page. Модуль Page в Cotonti отвечает за управление контентом, в частности страницами сайта. Файл "page.trashcan.php" интегрируется с системой корзины в Cotonti, предоставляя возможность восстановления страниц, которые были удалены.
Основная цель этого файла — обеспечить работу с корзиной для страниц. Это включает в себя регистрацию страниц в корзине и синхронизацию различных данных после удаления или восстановления страниц.
2. Взаимодействие с другими частями системы
Этот файл взаимодействует с несколькими частями системы Cotonti:
-
Корзина (Trashcan API): Файл подключает хук trashcan.api, который обеспечивает взаимодействие с системой корзины. Это позволяет интегрировать действия с корзиной, такие как удаление страниц и их восстановление, с основной системой управления контентом Cotonti.
-
Модуль Page: Файл использует функции модуля Page для работы с страницами. Он вызывает функции, связанные с обновлением счетчиков структуры категорий страниц и очисткой кэша после выполнения действий с удаленными страницами.
-
Кэш (Cache): Файл включает работу с кэшированием страниц. Когда страница восстанавливается или удаляется, кэш очищается для обновления отображаемой информации.
3. Используемые переменные, хуки, методы, функции и классы
-
Хуки:
- trashcan.api: Это хук, который подключает функциональность для взаимодействия с корзиной. Он позволяет этой части кода обрабатывать действия по удалению и восстановлению страниц в корзине.
-
Переменные:
- $trash_types: Это массив, в котором регистрируются типы данных для работы с корзиной. В данном случае добавляется тип "page", ссылающийся на таблицу страниц в базе данных.
-
Функции:
-
cot_trash_page_sync($data): Это основная функция, которая выполняет синхронизацию после удаления или восстановления страницы из корзины. Она обновляет счетчики структуры категорий и очищает кэш для страниц и категории.
-
cot_page_updateStructureCounters($data['page_cat']): Эта функция обновляет счетчики для категории страницы, что важно для поддержания актуальной информации о количестве страниц в категориях.
-
cot_page_url($data) и cot_url('page', ['c' => $data['page_cat']]): Эти функции генерируют URL для страницы и категории соответственно. Они используются для очистки кэша для этих URL.
-
Cot::$cache: Это объект кэширования Cotonti, который используется для очистки кэша после изменений на страницах.
4. Задачи, функции и условия, выполняемые кодом
Код решает следующие задачи:
- Регистрация страниц в корзине: Когда страница удаляется, она добавляется в корзину для последующего восстановления.
- Синхронизация после удаления или восстановления страницы: После выполнения операций с удалением или восстановлением страницы происходит обновление данных, таких как счетчики структуры категорий.
- Очистка кэша: При удалении или восстановлении страницы очищается кэш для самой страницы и ее категории, чтобы информация на сайте была актуальной.
- Обновление счетчиков структуры категорий: После восстановления или удаления страницы обновляются счетчики, которые показывают количество страниц в конкретной категории.
5. Как владельцу сайта использовать этот код?
Владельцы сайтов на платформе Cotonti могут использовать этот код для управления удаленными страницами через корзину. Это позволит им не только удалять страницы, но и восстанавливать их при необходимости, что особенно полезно в случае случайного удаления.
Кроме того, код гарантирует, что после удаления или восстановления страницы не произойдут несоответствия в данных или кэше сайта. Структура категорий будет оставаться актуальной, а кэш сайта будет очищен, обеспечивая корректное отображение контента.
6. Стиль написания PHP-кода и совместимость с версиями PHP
-
Стиль написания кода: Код написан в стандартном стиле PHP, с хорошей практикой использования именования переменных и функций. Для работы с объектами используется синтаксис объектно-ориентированного программирования (например, Cot::$db, Cot::$cache), что делает код гибким и легко расширяемым.
-
Совместимость с версиями PHP: Этот код использует объектно-ориентированные методы, такие как Cot::$cache->static->clearByUri() и Cot::$db->pages. Он совместим с версиями PHP, начиная с 5.3 и выше, поскольку используется синтаксис, поддерживающий объекты и статические методы.
Заключение
Файл "page.trashcan.php" в Cotonti CMF реализует функциональность корзины для страниц, что позволяет эффективно управлять удалением и восстановлением страниц на сайте. Он взаимодействует с корзиной, модулем Page, кэшированием и счетчиками структуры категорий. Этот файл может быть использован владельцами сайтов для обеспечения надежной работы с удаленными страницами и их восстановления, а также для поддержания актуальности данных и кэшированных ресурсов на сайте.
/* ====================
[BEGIN_COT_EXT]
Hooks=trashcan.api // Указывает, что этот файл использует хук 'trashcan.api', что позволяет подключить функциональность, связанную с корзиной (удаление, восстановление и т.д.), в API движка Cotonti.
[END_COT_EXT]
==================== */
/**
* Trash can support for pages
*
* @package Page
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
// Описание этого файла, указывающее, что он реализует поддержку корзины для страниц в модуле Page.
defined('COT_CODE') or die('Wrong URL');
// Проверка, что файл был вызван через механизм Cotonti, если нет - прекращает выполнение с ошибкой.
require_once cot_incfile('page', 'module');
// Подключает файл модуля "page", который предоставляет функции для работы с страницами в системе Cotonti.
$trash_types['page'] = Cot::$db->pages;
// Регистрация таблицы "pages" как одного из типов данных для работы с корзиной. В данном случае будет использоваться таблица страниц для восстановления удаленных страниц.
/**
* Sync page action
* @param array $data Page data as array (trashcan item data)
* @return bool
*/
// Описание функции cot_trash_page_sync, которая синхронизирует действия с элементами корзины для страниц.
function cot_trash_page_sync($data) // Функция, синхронизирующая действия при удалении или восстановлении страницы из корзины.
{
cot_page_updateStructureCounters($data['page_cat']);
// Вызывается функция для обновления счетчиков структуры категорий страниц (например, количества страниц в категории), основанной на категории страницы.
if (\Cot::$cache) { // Проверка, существует ли объект кэша в системе Cotonti.
if (\Cot::$cfg['cache_page']) {
// Если в конфигурации разрешен кэш для страниц:
\Cot::$cache->static->clearByUri(cot_page_url($data));
// Очистка кэша для статической страницы по ее URL, чтобы обновления на странице стали видны.
\Cot::$cache->static->clearByUri(cot_url('page', ['c' => $data['page_cat']]));
// Очистка кэша для категории страницы.
}
if (Cot::$cfg['cache_index']) {
// Если в конфигурации разрешен кэш для индекса:
Cot::$cache->static->clear('index');
// Очистка кэша для главной страницы (индекса).
}
}
return true; // Функция всегда возвращает true, подтверждая успешную синхронизацию.
}