Может быть кому-нибудь и пригодится, вобщем, хак удаляет личные сообщения с определенным текстом.
Например, вводим в настройках хака текст "test", и хак удалит все ЛС с этим текстом, причем все произойдет так, что пользователь вообще не заметит что ему кто то отправлял ЛС.
ЛС будут проверяться и удаляться сразу же, после отправки ЛС.
В самом коде хака, уже заложено что он будет автоматом сносить ЛС со словом porno, остальные слова прописывайте в настройках.
Установка:
1. Импоритовать продукт для вашей кодировки форума.
2. Включить и настроить хак в админке.
Обновление.
Добавлена поддержка добавление нескольких фраз, а не одной как было раньше
Исправлены уязвимости.
Последний раз редактировалось GiveMeABreak; 28.07.2009 в 21:10..
посмотрел код хака
проверка слова (одного всего!):
PHP код:
WHERE message LIKE '%" . $deltext . "%'");
==
предположим, что стоп-ворд = sex
а отправленное сообщение имеет такие слова: sexx, секс, порно, porno (и прочие)
в этом случае ЛС уйдет получателю
задумка неплохая, но реализация не ахти
kerk, лично меня покоробило отсутствие экранирования этого самого $deltext -- а ну как я туда введу строку с апострофом внутри? :(
GiveMeABreak, на будущее: какой бы ты запрос не писал -- не вставляй строковые переменные в него as-is, а сперва прогоняй через функцию $vbulletin->db->escape_string (если не в вобле, то через mysql_real_escape_string). Иначе sql-инъекция и ай-ай-ай...
'private_insertpm_process' -- pm еще не существует в базе и потому у него нет id. 'private_insertpm_complete' -- pm сохранено в базе, но его id не выбрано для дальнейшей обработки, т.к. незачем.
я бы юзал хук 'pmdata_presave', в котором проверял сообщение и выводил пользователю ошибку при помощи
PHP код:
$this->error('имя фразы с текстом ошибки');
зачем удалять отправленное pm и обновлять счетчики пользователей, если можно просто запретить отправку?
не совсем правильное решение
т.к. переменная $pm['message'] может НЕ являться одним словом, соотв. и написанный текст нельзя проверить, находится ли он в массиве $deltext
пример: