О компании Менеджмент Переводы Программирование Робототехника Все проекты Контакты
Админка
пожалуйста подождите

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

Помимо удаления сообщений, правильно обновляются даты последних сообщений в темах и они возвращаются на своё место по порядку последних сообщений.

// 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);
 
 
 
Языки
Темы
Copyright © 1999 — 2023
Зетка Интерактив