Copyright © Бугаевский Тимофей Михайлович, Зетка Интерактив 1999 — 2023
Материалы данного сайта могут быть использованы для работ на их основе при условии наличия ссылки на исходный материал при публикации. Полная лицензия.
Удаление всех записей на форуме от пользователяАвтор: Бугаевский Тимофей.
Когда на форум нападают спамеры, чистить руками за ними достаточно тяжело. Предлагается автоматизация. Пример кода, который можно использовать чтобы выбрать все сообщения на форуме, сделанном на Битриксе, от какого-то конкретного пользователя (спамера) и удалить их. Помимо удаления сообщений, правильно обновляются даты последних сообщений в темах и они возвращаются на своё место по порядку последних сообщений. // remove all messages of a specific user $bad_user_id = 29541; $deleteUserMessages = "DELETE FROM b_forum_message where author_id = $bad_user_id"; // update last message data in topics $updateTopics = "UPDATE b_forum_topic as t LEFT JOIN (SELECT max(gm.id) as id, gm.topic_id, max(gm.post_date) as post_date FROM b_forum_message as gm group by topic_id) as g on t.id = g.topic_id LEFT JOIN b_forum_message as m on m.id = g.id SET t.last_message_id = g.id, t.last_poster_id = m.author_id, t.last_poster_name = m.author_name, t.last_post_date = g.post_date, t.abs_last_message_id = g.id, t.abs_last_poster_id = m.author_id, t.abs_last_poster_name = m.author_name, t.abs_last_post_date = g.post_date WHERE t.abs_last_message_id <> g.id"; include '../../bitrix/php_interface/dbconn.php'; $db = mysql_connect($DBHost, $DBLogin, $DBPassword) or die('connect to database failed'); mysql_select_db($DBName, $db) or die('db not found'); mysql_set_charset('utf8', $db); mysql_query($deleteUserMessages); mysql_query($updateTopics); |
|