Чистка и модерирование форума phpBB
Столкнулся с задаче почистить форум от спама, который добавлялся практически год. В общей сложности накопилось более 100.000 постов.
Разумным решением было бы переставить форум с нуля, но заказчик настоял именно на чистке. Ну что ж, Ваши деньги, любой каприз.
Решил определиться что попадает 100% под спам:
- Посты в которых 0 сообщений
- Посты не от админа
- Посты не содержащие ключевых слов
Все эти варианты можно смело сразу удалять, те которые не попадают под определенный нами фильтр, уже будут фильтроваться вручную:
- Просмотр заголовка
- Просмотр первого поста
- Просмотр последних постов
Окей, нужно приступать к модерации, но выводятся только по 25 сообщений... Значит надо увеличить этот параметр, делается это в админке в управлении форумами:
Админка > Forums > Edit (зеленая шестеренка) > Topics per page:
Максимально тут можно поставить 127. Если Вам надо больше (позволяет оперативка выделенная для скрипта, и его время выполнения), можно сделать хак, модифицировав запись непосредственно в таблице phpbb_forums, столбец: forum_topics_per_page, не забудьте так же ему поменять тип, на побольше.. Замечу, что это необходимо сделать для каждого из форумов.
Т.к. меня устраивало именно 127 на страницу, то я поставил именно это значение. Началась чистка.. Дабы ускорить процесс, я решил предварительно кильнуть пользователей спаммеров, у которых в несколько раз больше сообщений чем у самого общительного пользователя на форуме, отследить это можно по кол-ву сообщений пользователей в таблице Members list, которая находится по примерно такому пути www.forum.com/memberlist.php
Теперь непосредственно про само удаление.. это скучная и не благодарная работа 🙂 вскоре я понял, что мне для визуализации нужных постов, надо раскрасить те, которые удалять, возможно, не нужно. Можно это делать разными способами, я пошел самым простым и написал javascript плагин для GreaseMonkey. Собственно этот пост, именно для того и нужен чтобы этот скриптик не писать вновь, вот он:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
// ==UserScript== // @name IB // @namespace IB // @include http://site.com/forum/ // ==/UserScript== var aPosts = document.getElementsByClassName('posts'); for (var i=0; i<aPosts.length; i++) { var ch = aPosts[i].innerHTML.substring(0, 1); if (ch!='0' && ch!='R') { aPosts[i].parentNode.style.backgroundColor = '#FF0000'; } var stopWords = Array('impotence', 'levitra', 'cialis', 'viagra', 'nude', 'adult', 'pharma', 'bdsm', 'apotheke'); for (var j=0; j<stopWords.length; j++) { var expr = new RegExp(stopWords[j], 'gim'); if (expr.exec(aPosts[i].parentNode.innerHTML)) { aPosts[i].parentNode.style.backgroundColor = 'transparent'; break; } } var stopWords = Array('admin', 'iHit', 'shooting', 'support', 'telepoints'); for (var j=0; j<stopWords.length; j++) { var expr = new RegExp(stopWords[j], 'gim'); if (expr.exec(aPosts[i].parentNode.innerHTML)) { aPosts[i].parentNode.style.backgroundColor = '#00FF00'; break; } } } |
он ничего не фильтрует, просто помогает выделить из кучи постов, те на которые надо обратить внимание, а именно посты с сообщениями внутри красятся в красный цвет, посты с ключевыми словами красятся в салатовый, это очень ускорило мой процесс:
Ну, а дальше Mark all > Delete
Хочу заметить, что т.к. я раньше с такой работой не сталкивался, то я довольно сильно продешевил, так что советую тем у кого есть подобное предложение, изначально попробовать сделать 15 минутный забег и засечь время которое Вам понадобиться на эту работу 🙂
Не забывайте делать бэкапы! Удачи!
Author: | Tags: /
| Rating:
2 comments.
Write a comment