Файл forums.trashcan.php в Cotonti CMF предназначен для обработки и поддержки функционала корзины для модуля форумов. Он позволяет управлять удалением и восстановлением объектов форума, таких как темы и сообщения. Этот файл реализует работу с корзиной для форума, где содержатся функции, связанные с удалением и восстановлением данных, а также синхронизацией статуса удаленных элементов.
Основное назначение файла:
-
Управление корзиной для форума: Основной задачей данного файла является реализация функций для обработки данных в корзине форума. Это включает в себя как проверку удаления (например, проверка существования темы форума при восстановлении), так и синхронизацию данных после выполнения операций (удаление, восстановление).
-
Обработка действий с элементами форума: Файл управляет действиями, связанными с удалением и восстановлением постов и тем форума, в том числе синхронизацией статистики и обновлением счетчиков для соответствующих категорий форума.
-
Интеграция с системой управления корзиной: Файл интегрируется с механизмом корзины системы Cotonti, предоставляя необходимые хуки и функции для работы с удаленными элементами форума.
Место в системе Cotonti:
- Файл хранится в директории
/modules/forums, которая является частью модуля форума для Cotonti.
- Он активно взаимодействует с другими частями модуля форумов и использует данные из базы данных, связанные с форумами и их элементами.
- Взаимодействие происходит через вызовы функций, обработку данных из базы и обновление элементов в соответствии с действиями пользователя.
Взаимодействие с системой и другими частями сайта:
- Взаимодействие с базой данных: Файл выполняет запросы к базе данных для получения информации о темах и постах форума, а также обновляет статистику и счетчики после выполнения операций с удаленными элементами.
- Взаимодействие с системой кэширования: В некоторых функциях происходит очистка кэша для форумов, чтобы обновления и изменения сразу же отображались на сайте.
- Использование хуков: Файл использует хуки, которые позволяют интегрировать действия с корзиной в другие части форума или модуля.
Переменные, хуки, методы, функции, классы:
-
Переменные:
$trash_types: Ассоциативный массив, который связывает типы объектов форума (посты и темы) с соответствующими таблицами базы данных для восстановления этих элементов.
$db_forum_posts, $db_forum_topics: Переменные, представляющие таблицы базы данных, в которых хранятся данные о постах и темах форума.
$data: Переменная, которая передается в функции и представляет данные о конкретном объекте форума, который находится в корзине.
-
Хуки:
trashcan.api: Хук для интеграции с системой корзины (механизмом работы с удаленными элементами).
forums.admin.first: Хук для выполнения операций при администрировании форума в панели управления.
forums.admin.tags: Хук для работы с тегами форума, например, для расширения функционала.
-
Методы и функции:
cot_forums_resyncTopic($topicId): Функция, которая синхронизирует данные темы форума после ее восстановления или удаления.
cot_forums_updateStructureCounters($categoryId): Функция для обновления счетчиков в структуре форума после изменения данных (удаления или восстановления).
cot_url($module, $params): Функция для генерации URL для перехода по различным разделам форума.
cot_getextplugins($hookName): Функция для получения плагинов, связанных с определенным хуком, что позволяет расширить функциональность.
cot_trash_forumpost_check($data): Функция для проверки наличия поста в базе данных при его восстановлении из корзины.
cot_trash_forumpost_sync($data): Функция для синхронизации данных поста при восстановлении из корзины.
cot_trash_forumtopic_sync($data): Функция для синхронизации данных темы форума при восстановлении из корзины.
-
Классы:
CotDB: Класс для работы с базой данных в Cotonti. Используется для выполнения запросов к базе данных, таких как получение и обновление данных.
CotCache: Класс для работы с кэшированием. Используется для очистки кэша после обновлений.
Суть содержания кода:
-
Регистрация типов объектов для корзины: В файле регистрируются типы объектов форума, такие как сообщения (forumpost) и темы (forumtopic), которые могут быть перемещены в корзину.
-
Проверка и синхронизация: Для каждого элемента в корзине реализованы функции проверки его состояния и синхронизации, такие как cot_trash_forumpost_check, cot_trash_forumpost_sync, и cot_trash_forumtopic_sync. Эти функции отвечают за корректность данных и за обновление статистики после удаления или восстановления элементов.
-
Обновление статистики и структуры форума: После выполнения действий с элементами форума (удаление, восстановление) обновляются соответствующие счетчики для категорий форума и других элементов.
-
Интеграция с хуками: Файл использует хуки для интеграции с внешними плагинами и дополнительной настройкой логики работы с корзиной. Например, хуки trashcan.api, forums.admin.first, и forums.admin.tags позволяют расширять функционал корзины и форума.
-
Поддержка кэширования: В некоторых функциях реализована очистка кэша для страницы форума, чтобы изменения сразу отражались на сайте после работы с корзиной.
/* ====================
[BEGIN_COT_EXT]
Hooks=trashcan.api
[END_COT_EXT]
==================== */
/**
* Trash can support for forums
*
* @package Forums
* @copyright (c) Cotonti Team
* @license https://github.com/Cotonti/Cotonti/blob/master/License.txt
*/
defined('COT_CODE') or die('Wrong URL'); // Проверка, что файл был вызван из движка Cotonti, если нет - скрипт завершает выполнение
require_once cot_incfile('forums', 'module'); // Подключение модуля forum для работы с его функционалом
// Register restoration table
$trash_types['forumpost'] = Cot::$db->forum_posts; // Регистрация типа данных для восстановления, посты форума
$trash_types['forumtopic'] = Cot::$db->forum_topics; // Регистрация типа данных для восстановления, темы форума
Объяснение:
- Заголовки
BEGIN_COT_EXT и END_COT_EXT - служат для регистрации хука, который будет вызываться при взаимодействии с API корзины (trashcan.api).
- Проверка на наличие правильной константы
COT_CODE, обеспечивающей, что файл подключается только в рамках движка.
- Подключение модуля форумов для использования его функционала.
- Создание массива
$trash_types, который регистрирует типы данных для восстановления (посты и темы форума) в корзине.
/**
* Check forumpost action
*
* @param array $data trashcan item data
* @return bool
* @global CotDB $db
*/
function cot_trash_forumpost_check($data) // Функция для проверки действия с постом форума в корзине
{
global $db_forum_posts, $db_forum_topics, $db; // Доступ к глобальным переменным базы данных для таблиц постов и тем
$sql = $db->query("SELECT ft_id FROM $db_forum_topics WHERE ft_id='".$data['fp_topicid']."'"); // Запрос к базе данных для получения ID темы форума, к которой относится пост, из таблицы форумов
if ($row = $sql->fetch()) { // Если найдено совпадение (тема существует)
return true; // Возвращаем true, что тема существует
}
return false; // Если тема не найдена, возвращаем false
}
Объяснение:
- Функция
cot_trash_forumpost_check проверяет, существует ли тема, к которой относится данный пост форума в корзине.
- Функция принимает параметр
$data — массив с данными элемента из корзины.
- Глобальная переменная
$db используется для выполнения SQL-запроса.
- В запросе происходит проверка, существует ли тема с указанным
ft_id (ID темы), соответствующая посту.
- Если тема существует, функция возвращает
true, если нет — false.
/**
* Sync forumpost action
*
* @param array $data trashcan item data
* @return bool
*/
function cot_trash_forumpost_sync($data) // Функция синхронизации действия с постом форума в корзине
{
cot_forums_resyncTopic($data['fp_topicid']); // Вызов функции для синхронизации темы форума по ID темы, связанной с постом
cot_forums_updateStructureCounters($data['fp_cat']); // Вызов функции для обновления счетчиков в структуре форума, используя ID категории поста
return true; // Возвращаем true, что синхронизация прошла успешно
}
Объяснение:
- Функция
cot_trash_forumpost_sync синхронизирует данные после действия с постом форума в корзине.
- Параметр
$data передает данные о посте, такие как ID темы и ID категории.
- Внутри функции:
cot_forums_resyncTopic($data['fp_topicid']) — выполняет синхронизацию темы форума, чтобы убедиться, что информация о теме актуальна.
cot_forums_updateStructureCounters($data['fp_cat']) — обновляет счетчики в структуре форума для соответствующей категории, например, количество постов или просмотров.
- Функция возвращает
true, чтобы сигнализировать о том, что синхронизация прошла успешно.
/**
* Sync forumtopic action
* @param array $data trashcan item data
* @return bool
*/
function cot_trash_forumtopic_sync($data) // Функция синхронизации действия с темой форума в корзине
{
cot_forums_resyncTopic($data['ft_id']); // Вызов функции для синхронизации данных темы форума по ID темы
cot_forums_updateStructureCounters($data['fp_cat']); // Обновление счетчиков в структуре форума для категории, к которой относится тема
if (Cot::$cache && Cot::$cfg['cache_forums']) { // Проверка, активирован ли кэш и включен ли кэш для форумов
Cot::$cache->static->clearByUri(cot_url('forums')); // Очистка кэша для страницы форума по соответствующему URL
}
return true; // Возвращаем true, что синхронизация прошла успешно
}
Объяснение:
- Функция
cot_trash_forumtopic_sync выполняет синхронизацию данных, связанных с темой форума, после того как она была перемещена в корзину.
- Параметр
$data содержит данные о теме форума, такие как ID темы и ID категории.
- Внутри функции:
cot_forums_resyncTopic($data['ft_id']) — синхронизирует информацию о теме форума по переданному ID.
cot_forums_updateStructureCounters($data['fp_cat']) — обновляет счетчики для соответствующей категории форума, чтобы данные оставались актуальными.
if (Cot::$cache && Cot::$cfg['cache_forums']) — проверяет, включен ли кэш для форума, и если это так, очищает кэш для страницы форума с использованием URL cot_url('forums').
- Функция завершает выполнение и возвращает
true, подтверждая успешную синхронизацию.
Заключение:
Файл forums.trashcan.php выполняет важную роль в управлении корзиной форума на платформе Cotonti, обеспечивая функциональность для перемещения и восстановления элементов форума (тем и сообщений). Этот файл интегрируется с системой форума, обеспечивая актуальность данных и синхронизацию состояния элементов форума, а также обновление статистики и очистку кэша.
7 минут чтения Sodium Carbonate