SubscriptCatForum - Подписка пользователей на обновления форума

Плагин для Cotonti, его задача - упростить отслеживание активности на форуме. Пользователю не требуется регулярно проверять интересующие разделы: система автоматически отправляет уведомления о новых событиях.

Опубликовано в: Модули и Плагины для Cotonti

Плагин SubscriptCatForum для Cotonti CMF

Подписка пользователей на обновления категорий форума

1. Обзор функционала и назначение

SubscriptCatForum — это плагин для Cotonti CMF, который реализует систему подписки пользователей на категории форума. После подписки пользователь получает уведомления на электронную почту при появлении новых событий в выбранных разделах.

Основная задача плагина — упростить отслеживание активности на форуме. Пользователю не требуется регулярно проверять интересующие разделы: система автоматически отправляет уведомления о новых событиях.

Основные возможности

Подписка на категории форума

Пользователь может выбрать одну или несколько категорий форума и подписаться на их обновления. Управление подписками осуществляется через отдельную страницу плагина.

После подписки пользователь будет получать уведомления обо всех новых событиях в выбранных разделах.

Email-уведомления

При появлении новых событий в категории плагин отправляет подписчикам email-уведомление. Сообщение содержит:

  • название темы
  • название раздела
  • имя автора сообщения
  • текст последнего сообщения (без HTML)
  • ссылку на тему
  • ссылку на конкретный пост

Отслеживаемые события

Плагин реагирует на события форума через систему хуков Cotonti. Уведомления отправляются при следующих действиях:

  1. создание новой темы в категории
  2. создание нового сообщения в теме
  3. редактирование сообщения
  4. перемещение темы между категориями (учтено в логике уведомлений)

Управление подписками пользователем

Пользователь может:

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

Для этого используется отдельная страница плагина, доступная через меню личного кабинета.

Административное управление подписками

Администратор сайта может:

  • просматривать подписчиков каждой категории
  • добавлять пользователя в подписку
  • удалять пользователя из подписки

Административный интерфейс отображает список категорий форума и привязанных к ним пользователей.

Преимущества использования

  1. Пользователь следит только за интересующими разделами.
  2. Нет необходимости подписываться на каждую тему отдельно.
  3. Снижается вероятность пропустить новые обсуждения.
  4. Администратор может централизованно управлять подписками.

Текущие ограничения

На момент реализации плагина имеются следующие ограничения:

  • уведомления отправляются сразу при возникновении события (без cron)
  • отсутствует пагинация
  • ведётся отладочное логирование

Плагин ориентирован на использование на небольших форумах Cotonti.

Требования

Плагин тестировался в следующей конфигурации:

  • Cotonti CMF (актуальная версия из GitHub на 25-02-2025)
  • PHP 8.4
  • MySQL 8.4

2. Техническая часть (работа плагина)

Плагин использует систему хуков Cotonti, что позволяет реагировать на события форума и выполнять отправку уведомлений.

Архитектура плагина

Основные компоненты:

  • таблица подписок
  • хуки событий форума
  • standalone-страница управления подписками
  • административный интерфейс
  • функции работы с подписками

Таблица подписок

Плагин создаёт отдельную таблицу:

CREATE TABLE IF NOT EXISTS `cot_subscriptcatforum` (
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`user_id` INT UNSIGNED NOT NULL,
`cat_forum_subs` text NOT NULL,
`created_at` INT UNSIGNED NOT NULL DEFAULT 0
);

Поля:

полеописание
idуникальный идентификатор записи
user_idID пользователя
cat_forum_subsкод категории форума
created_atвремя создания подписки

Хуки форума

Плагин реагирует на несколько событий форума.

1. Новый пост

Хук:

  Hooks=forums.posts.newpost.done  

Файл:

  subscriptcatforum.forums.posts.newpost.done.php  

Основные действия:

  1. определяется ID темы и код категории
  2. извлекается последний пост
  3. ищутся подписчики категории
  4. формируется email
  5. выполняется отправка уведомлений

Получение подписчиков:

$subscribers = $db->query("
    SELECT u.user_email, u.user_id 
    FROM $db_subscriptcatforum s
    JOIN $db_users u ON s.user_id = u.user_id
    WHERE s.cat_forum_subs = ? 
    AND u.user_id != ?", [$section_code, $post_author_id])->fetchAll();

Автор поста исключается из списка получателей.


2. Создание новой темы

Хук:

  Hooks=forums.newtopic.newtopic.done  

Файл:

  subscriptcatforum.forums.newtopic.newtopic.done.php  

Алгоритм:

  1. определяется ID темы
  2. извлекается название темы и категория
  3. получаются данные первого сообщения
  4. формируется письмо
  5. выполняется рассылка подписчикам категории

3. Редактирование поста

Хук:

  Hooks=forums.editpost.update.done  

Файл:

  subscriptcatforum.forums.editpost.update.done.php  

Этот обработчик:

  • получает категорию
  • находит подписчиков
  • извлекает обновлённый пост
  • отправляет уведомление о редактировании

Формирование ссылок

Ссылки на тему и пост формируются стандартными функциями Cotonti:

$topic_url = cot_url('forums', 'm=posts&q=' . $topic_id);
$post_url = cot_url('forums', "m=posts&id=" . $post_id . "&n=last", "#bottom");

Отправка email

Используется встроенная функция Cotonti:

  cot_mail($user_email, $subject, $message);   

Логирование

Для отладки используется запись в файл:

function log_to_file_newpostdone($message) {
$logfile = __DIR__ . '/subscription_debug.log';
$date = date('Y-m-d H:i:s');
file_put_contents($logfile, "[$date] $message\n", FILE_APPEND);
}

Лог фиксирует:

  • запуск обработчика
  • параметры запроса
  • найденных подписчиков
  • отправку писем

Функции управления подписками

Файл:

  subscriptcatforum.functions.php  

Основные функции:

Проверка подписки

function check_existing_subscription($user_id, $forum_id) {
return $db->query("SELECT COUNT(*) FROM $db_subscriptcatforum WHERE user_id = ? AND cat_forum_subs = ?", [$user_id, $forum_id])->fetchColumn() > 0;
}

 

Подписка пользователя

function subscribe_user($user_id, $forum_id) {
$db->query("INSERT INTO $db_subscriptcatforum (user_id, cat_forum_subs, created_at) VALUES (?, ?, ?)", [$user_id, $forum_id, time()]);
}

 

Отписка пользователя

function unsubscribe_user($user_id, $forum_id) {
$db->query("DELETE FROM $db_subscriptcatforum WHERE user_id = ? AND cat_forum_subs = ?", [$user_id, $forum_id]);
}

3. Установка, настройка и эксплуатация

Установка плагина

  1. Скопировать папку плагина
  subscriptcatforum  

в каталог

  /plugins/  
  1. Открыть панель администратора Cotonti.
  2. Найти плагин SubscriptCatForum.
  3. Установить его.

При установке автоматически создаётся таблица:

  cot_subscriptcatforum   


Добавление ссылки в меню пользователя

Для доступа к странице управления подписками необходимо добавить ссылку в шаблон темы.

Пример фрагмента:

<!-- IF {PHP|cot_plugins_active('subscriptcatforum')} -->
<li><a href="{PHP|cot_url('subscriptcatforum')}">{PHP.L.subscriptcatforum_title_link}</a></li>
<!-- ENDIF -->

  

Ссылка обычно размещается в меню личного кабинета пользователя.


Страница управления подписками

Страница плагина отображает:

  • список категорий форума
  • вложенность категорий
  • чекбоксы выбора

Пример HTML-структуры:

<input type="checkbox" 
      class="form-check-input"
      name="selected_categories[]" 
      value="{CATEGORY_CODE}"
      {IS_SELECTED}>

После отправки формы:

  1. старые подписки пользователя удаляются
  2. выбранные категории записываются в таблицу
$db->query("DELETE FROM $db_subscriptcatforum WHERE user_id = ?", [$usr['id']]);

Затем добавляются новые записи.


Администрирование подписок

Администратор может управлять подписками через инструмент:

  admin → tools → subscriptcatforum  

В интерфейсе отображаются:

  • категории форума
  • список подписчиков
  • форма добавления пользователя

Добавление пользователя:

$db->insert($db_x . "subscriptcatforum", [
   'user_id' => $user_id,
   'cat_forum_subs' => $category_id,
   'created_at' => time()
]);

Удаление пользователя:

$db->delete($db_x . "subscriptcatforum", "user_id = ? AND cat_forum_subs = ?", [$user_id, $category_id]);

Эксплуатация

Плагин начинает работать сразу после установки.

Уведомления отправляются автоматически при:

  • создании темы
  • публикации поста
  • редактировании сообщения

Все события фиксируются в логах, что позволяет проводить диагностику.

Тема поддержки плагина, вопросы, обсуждения и предложения

Скачать плагин https://github.com/webitproff/cot-subscriptcatforum



Рейтинг на основе отзывов:
Звезд получено: 0
Oтзывов всего: 0
Средняя оценка: 0
4 минут чтения
Владелец: Carbonate Sodium

Отзывы к товарам

Отзывов пока нет


Добавить в корзину

Товар без файла для загрузки

 

Категория расширения
Оповещения, рассылки, email и SMS, Подписки и рассылки
Доступность
Бесплатно

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

webitproff

Оффлайн

webitproff

Последняя авторизация: 19.07.2026 16:35

  • Чем могу помочь?

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

  • Разработки на GitHub бесплатно
    • 11.03.2026 21:25
    • 02.06.2026 08:46
    • Язык:

    Витрина Market PRO

    CMS, Скрипт и Движок - веб сайта онлайн-витрины, интернет магазина инфопродуктов и цифровых товаров. Разные цены в разных валютах на товар. Онлайн-оплата в криптовалюте за товары и услуги.