Чистка и модерирование форума 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: | Rating: / | Tags:


2 comments.
Write a comment