Slimer Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Название: Удаление всех ПМ конкретного юзераДобавил: SlimerДобавлен: 02 Апр 2009Обновлен: 03 Апр 2009Категория: IP.Board 2.3.x В связи с участившимися случаями спама через ПМ и ввиду бездействия поддержки от производителя пришлось написать небольшую приблуду. Можно посмотреть и удалить все ПМ сообщения конкретного юзера. версия 1.1- при просмотре сообщений по ID теперь есть ссылка - удалить все сообщения Нажмите здесь, чтобы скачать файл Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Напишите инструкцию по установке, ибо придут нубы и... И версию точнее укажите. Ссылка на комментарий Поделиться на других сайтах Прочее
Slimer Опубликовано 2 Апреля 2009 Автор Жалоба Поделиться Опубликовано 2 Апреля 2009 Да какая уж там версия - пусть будет 1.0.Установка такая - копируешь файлик в директорию /modules/и запускаешь www.bla-bla.ru/forum/index.php?automodule=spamСначала покажет список наиболее активных ПМ-юзеров. Как правило у меня первый всегда спамер с несколькими десятками тысяч сообщений ))Или тупо ИД можно ввести - если пришла жалоба от юзеров на спам и поглядеть что он там шлет. Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Я имел в виду версию IPB, к которой это подходит. Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Насчет всех версий смело заявлено.На 1.х, как и следовало ожидать, и вызов другой - index.php?act=module&module=spam - и все равно белая страница. Если руки дойдут, перепишу под "однушку" Ссылка на комментарий Поделиться на других сайтах Прочее
Slimer Опубликовано 2 Апреля 2009 Автор Жалоба Поделиться Опубликовано 2 Апреля 2009 (изменено) Я имел в виду версию IPB, к которой это подходит.А, понял.. В момент постинга занят был, поэтому ткнул чтоб не разбираться сильно. Должно подойти для двушки. В первой конечно все по-другому.Подправил версии. Не уверен про 2.0. Кто-нибудь помнит, с модулями там все прокатит? Если руки дойдут, перепишу под "однушку" Собственно там все элементарно. Кто хоть немного соображает разберется. Смысл в двух запросах, которые неоднократно пролетали на форуме. Из косяков - там запросы с префиксом таблиц по-умолчанию, у кого-то может не завестись - поправьте сами. Изменено 2 Апреля 2009 пользователем Slimer Ссылка на комментарий Поделиться на других сайтах Прочее
FatCat Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Смысл в двух запросах, которые неоднократно пролетали на форуме.Чуть побольше.Собственно, вот модуль для 1.2+<?php /* +-------------------------------------------------------------------------- | Invision Power Board v1.2 Module File | ======================================== | by Matthew Mecham | © 2001 - 2003 Invision Power Services | [url="http://www.invisionpower.com"]http://www.invisionpower.com[/url] | ======================================== | Web: [url="http://www.invisionboard.com"]http://www.invisionboard.com[/url] | Email: matt@invisionpower.com | Licence Info: [url="http://www.invisionboard.com/?license"]http://www.invisionboard.com/?license[/url] +--------------------------------------------------------------------------- | > Модуль от FatCat: очистка форума от спама в ПМ | > с возможнстью одновременного удаления спамера | > За идею и 2 сложных запроса спасибо Slimer | > [url="http://www.ibresource.ru/forums/index.php?showtopic=57273"]http://www.ibresource.ru/forums/index.php?showtopic=57273[/url] +-------------------------------------------------------------------------- */ //===================================== // Define class, this must be the same // in all modules //===================================== class module extends module_loader { //===================================== // Define vars if required //===================================== var $result = ""; //===================================== // Constructer, called and run by IPB //===================================== function module() { global $ibforums, $DB, $std; //===================================== // Do any set up here, like load lang // skin files, etc //===================================== $ibforums->lang = $std->load_words($ibforums->lang, 'lang_boards', $ibforums->lang_id); $this->html = $std->load_template('skin_boards'); //===================================== // Set up structure //===================================== switch( $ibforums->input['cmd'] ) { case 'show': $this->show(); break; case 'del': $this->del(); break; case 'complete_del': $this->complete_del(); break; default: $this->defaultdo(); break; } print $this->result; exit(); } function show() { global $ibforums, $DB, $std; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $msges = ""; $id = intval($ibforums->input['id']); $DB->query("SELECT name FROM ibf_members WHERE id = ".$id); $name = ""; if ( $row = $DB->fetch_row() ) { $name = $row['name']; } $DB->query("SELECT p.from_id, p.recipient_id, p.msg_date, p.title, p.message, m.name FROM ibf_messages p LEFT JOIN ibf_members m ON (p.recipient_id=m.id) WHERE from_id = ".$id." ORDER BY msg_date DESC LIMIT 20"); while($row = $DB->fetch_row()) { $msges .= "<tr><td valign=top>".date("d-m-Y H:i:s",$row['msg_date'])."</td><td valign=top>".$row['title']."</td><td>".$row['message']."</td><td>".$row['name']."</td></tr>"; if ($msges == "") { $this->result = "У этого пользователя нет отправленных ПМ-сообщений"; } else { $this->result = "<table width=90% border=1 cellspacing=0 cellpadding=7 align=center><tr><tr><td colspan=4>Последние 20 отправленных ПМ-сообщений пользователя <strong>".$name."</strong> <a href='index.php?act=module&module=spam&cmd=del&id=".$id."'>Удалить все</a></td></tr><tr><tr><td colspan=4><hr width='100%' size='1'></td></tr><th>Дата</th><th>Заголовок</th><th>Текст</th><th>Получатель</th></tr>".$msges."</table>"; } } } else { $this->result = "You're not an admin!"; } } function del() { global $ibforums, $DB, $std; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $id = intval($ibforums->input['id']); $DB->query("SELECT name FROM ibf_members WHERE id = ".$id); if ( $DB->get_num_rows() ) { $row = $DB->fetch_row(); $this->result = "<ul><li><a href='index.php?act=module&module=spam&cmd=complete_del&memd=0&id=".$id."'>Удалить все сообщения пользователя <strong>".$row['name']."</strong></a>?</li><li><a href='index.php?act=module&module=spam&cmd=complete_del&memd=1&id=".$id."'>Удалить все сообщения <strong>и самого пользователя ".$row['name']."</strong></a>?</li></ul>Внимание! Больше никаких предупреждений не будет!"; } else { $this->result = "Пользователь не существует!<br><br>Если пользователь был некорректно удален, Вы можете <a href='index.php?act=module&module=spam&cmd=complete_del&memd=0&id=".$id."'>удалить оставшиеся после него сообщения</a> или <a href='index.php?act=module&module=spam'>выбрать других пользователей</a>."; } } else { $this->result = "You're not an admin!"; } } function complete_del() { global $ibforums, $DB, $std; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $id = intval($ibforums->input['id']); if($ibforums->input['memd'] == 1) { $this->result = "Удаляем сообщения и затем пользователя:<br>"; } else { $this->result = "Удаляем сообщения:<br>"; } $DB->query("SELECT msg_id FROM ibf_messages WHERE read_state = 0 AND from_id = ".$id); if ( $DB->get_num_rows() ) { $recipients = Array(); while($row = $DB->fetch_row()) { $recipients[] = $row['msg_id']; } $recipients = implode(",",$recipients); $this->result .= "- Удаление оповещений о непрочитанных сообщениях ID's ".$recipients." ... "; $DB->query("UPDATE ibf_members SET new_msg = (new_msg-1), show_popup = '0' WHERE id IN(".$recipients.")"); $this->result .= "удалены!<br>"; } else { $recipients = ""; } $this->result .= "- Удаление сообщений ... "; $DB->query("DELETE FROM ibf_messages WHERE from_id = ".$id); $DB->query("DELETE FROM ibf_contacts WHERE member_id='".$id."' or contact_id='".$id."'"); $this->result .= "выполнено!"; if($ibforums->input['memd'] == 1) { $this->result .= "- Удаление пользователя ... "; $DB->query("UPDATE ibf_posts SET author_id='0' WHERE author_id='".$id."'"); $DB->query("UPDATE ibf_topics SET starter_id='0' WHERE starter_id='".$id."'"); $DB->query("DELETE from ibf_members WHERE id='".$id."'"); $DB->query("DELETE from ibf_pfields_content WHERE member_id='".$id."'"); $DB->query("DELETE from ibf_member_extra WHERE id='".$id."'"); $DB->query("DELETE from ibf_tracker WHERE member_id='".$id."'"); $DB->query("DELETE from ibf_forum_tracker WHERE member_id='".$id."'"); $DB->query("DELETE from ibf_warn_logs WHERE wlog_mid='".$id."'"); $DB->query("DELETE FROM ibf_validating WHERE member_id='".$id."'"); // Удаляем журнал (mJournal 1.05) $DB->query("DELETE FROM ibf_jposts WHERE author_id = '".$id."'"); $DB->query("DELETE FROM ibf_jcomments WHERE owner_id = '".$id."'"); $this->result .= "выполнено!"; } $this->result .= "<br><br><br><a href='index.php?act=module&module=spam'>К началу</a>"; } else { $this->result = "You're not an admin!"; } } function defaultdo() { global $ibforums, $DB, $std; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $msges = ""; $this->result = "<table border=1 align=center><tr><td colspan=3 align=center><form method=get action=\"\"><input type=hidden name=cmd value=show><input type=hidden name=act value=module><input type=hidden name=module value=spam>ID юзера:<input type=text name=id size=5><input type=submit value=\"Посмотреть последние сообщения\"></form></td><tr><td colspan=3><hr width=100% size=1></td></tr><tr><th>Пользователь</th><th>Отправил</th><th>-</th></tr></tr>"; $DB->query("select t.from_id, count(1) as num, m.name FROM ibf_messages t INNER JOIN ibf_members m ON (m.id=t.from_id) group by from_id order by num DESC LIMIT 20"); while($row = $DB->fetch_row()) { $msges .= "<tr><td><strong><a href='index.php?showuser=".$row['from_id']."' target='_blank'>".$row['name']."</a></strong></td><td>".$row['num']."</td><td><a href=index.php?act=module&module=spam&cmd=del&id=".$row['from_id'].">Удалить все</a> | <a href=index.php?act=module&module=spam&cmd=show&id=".$row['from_id'].">Посмотреть</a></td></tr>"; } $this->result .= $msges; $this->result .= "</table>"; } else { $this->result = "You're not an admin!"; } } } ?> Я скрутил-таки счетчики и убрал оповещение о новом ПМ для тех, кто еще не прочитал.И сделал опциональное удаление пользователя вслед за удалением личных сообщений - чтобы лишний раз в админку не залезать.Ну и так по мелочи чуть подрихтовал. Ссылка на комментарий Поделиться на других сайтах Прочее
Sannis Опубликовано 2 Апреля 2009 Жалоба Поделиться Опубликовано 2 Апреля 2009 Из косяков - там запросы с префиксом таблиц по-умолчанию, у кого-то может не завестись - поправьте сами.Драйвер БД должен сам исправлять это Ссылка на комментарий Поделиться на других сайтах Прочее
nilbug Опубликовано 3 Апреля 2009 Жалоба Поделиться Опубликовано 3 Апреля 2009 Да какая уж там версия - пусть будет 1.0.Установка такая - копируешь файлик в директорию /modules/и запускаешь www.bla-bla.ru/forum/index.php?automodule=spamСначала покажет список наиболее активных ПМ-юзеров. Как правило у меня первый всегда спамер с несколькими десятками тысяч сообщений ))Или тупо ИД можно ввести - если пришла жалоба от юзеров на спам и поглядеть что он там шлет. как удалять то? не нашел ничего подобного! Ссылка на комментарий Поделиться на других сайтах Прочее
Slimer Опубликовано 3 Апреля 2009 Автор Жалоба Поделиться Опубликовано 3 Апреля 2009 как удалять то? не нашел ничего подобного!Что удалять-то? Сам мод? Просто удали файл и забудь про него! Ссылка на комментарий Поделиться на других сайтах Прочее
nilbug Опубликовано 3 Апреля 2009 Жалоба Поделиться Опубликовано 3 Апреля 2009 как удалять то? не нашел ничего подобного!Что удалять-то? Сам мод? Просто удали файл и забудь про него! при чем тут мод. как удалять сообщения? захожу ввожу ID вижу сообщение некого пользователя а функции удалить нету Ссылка на комментарий Поделиться на других сайтах Прочее
Slimer Опубликовано 3 Апреля 2009 Автор Жалоба Поделиться Опубликовано 3 Апреля 2009 Ёлки, забыл прикрутить линк. Скачайте новую версию. Ссылка на комментарий Поделиться на других сайтах Прочее
nilbug Опубликовано 3 Апреля 2009 Жалоба Поделиться Опубликовано 3 Апреля 2009 Ёлки, забыл прикрутить линк. Скачайте новую версию. скачал. а толку? нажимаю "Удалить все сообщения" и с форума выходит на главную страницу сайта. то ли я тормоз, то ли не работает не понимаю... хотя догнал. нажимаю кнопку удалить сообщения и переходит по ссылке: http://сайт.ru/index.php?automodule=spam&a...ер_пользователя хотя должен быть http://сайт.ру/forum/index.php?automodule=...пользователя.... так что исправляй. ладно, я себе сам исправил. но для остальных сделай. Ссылка на комментарий Поделиться на других сайтах Прочее
Black_Sun Опубликовано 4 Апреля 2009 Жалоба Поделиться Опубликовано 4 Апреля 2009 А чё там править то?найти$this->nav = array( "<a href='".$this->ipsclass->base_url."automodule=map'>".$this->page_title."</a>" );заменить на$this->nav = array( "<a href='".$this->ipsclass->base_url."automodule=spam'>".$this->page_title."</a>" );найти$msges .= "<tr><td>".$row['name']."</td><td>".$row['num']."</td><td><a href=/index.php?automodule=spam&cmd=del&id=".$row['mt_from_id'].">Удалить все</a> | <a href=/index.php?automodule=spam&cmd=show&id=".$row['mt_from_id'].">Посмотреть</a></td></tr>";и заменить на$msges .= "<tr><td>".$row['name']."</td><td>".$row['num']."</td><td><a href=".$this->ipsclass->base_url."automodule=spam&cmd=del&id=".$row['mt_from_id'].">Удалить все</a> | <a href=".$this->ipsclass->base_url."automodule=spam&cmd=show&id=".$row['mt_from_id'].">Посмотреть</a></td></tr>"; найти$this->output .= "<a href=/index.php?automodule=spam&cmd=del&id=".$id.">Удалить все сообщения</a><br><br><table width=100% border=1 cellspacing=0 cellpadding=7>";заменить на$this->output .= "<a href=".$this->ipsclass->base_url."automodule=spam&cmd=del&id=".$id.">Удалить все сообщения</a><br><br><table width=100% border=1 cellspacing=0 cellpadding=7>"; найти$this->output .= "Вы уверены, что хотите удалить все <b>$num</b> сообщения от ".$row['name']." (".$id.")? <a href=/index.php?automodule=spam&cmd=jhdiuy23h&id=".$id.">ДА</a>";заменить на$this->output .= "Вы уверены, что хотите удалить все <b>$num</b> сообщения от ".$row['name']." (".$id.")? <a href=".$this->ipsclass->base_url."automodule=spam&cmd=jhdiuy23h&id=".$id.">ДА</a>";вроде всё p.s. А как добавить туда поле от кого сообщение?p.p.s Лимит сообщений выводящихся изменяются в этойстроке group by mt_from_id order by num DESC LIMIT 20 Ссылка на комментарий Поделиться на других сайтах Прочее
Rostov114 Опубликовано 4 Апреля 2009 Жалоба Поделиться Опубликовано 4 Апреля 2009 jhdiuy23h() - название функции появилось после удара рукой об клавиатуру? Ссылка на комментарий Поделиться на других сайтах Прочее
Black_Sun Опубликовано 5 Апреля 2009 Жалоба Поделиться Опубликовано 5 Апреля 2009 Неужели никто не знает как добавить туда поле от кого пришло сообщение?было бы круто Ссылка на комментарий Поделиться на других сайтах Прочее
кот-обормот Опубликовано 7 Апреля 2009 Жалоба Поделиться Опубликовано 7 Апреля 2009 классный мод) и чужие лс можно читать) еще неплохо было бы сделать удаление только одного письма, а не всех Ссылка на комментарий Поделиться на других сайтах Прочее
Navie Опубликовано 12 Апреля 2009 Жалоба Поделиться Опубликовано 12 Апреля 2009 Совместим ли этот мод с 2.3.х ? Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 12 Апреля 2009 Жалоба Поделиться Опубликовано 12 Апреля 2009 забудьте этот мерзкий вопрос навсегда Ссылка на комментарий Поделиться на других сайтах Прочее
nwd Опубликовано 14 Апреля 2009 Жалоба Поделиться Опубликовано 14 Апреля 2009 Спасибо, очень удобно и, как выше заметили, можно подглядывать за чужими переписками без phpmyadmin'ов всяких ) Ссылка на комментарий Поделиться на других сайтах Прочее
moskovit Опубликовано 22 Апреля 2009 Жалоба Поделиться Опубликовано 22 Апреля 2009 Не уверен про 2.0. Кто-нибудь помнит, с модулями там все прокатит? У меня 2.0 на МКПортале - запускаю ...../index.php?automodule=spam Вылетает чистая пустая страница. Подскажите, плз, как и где можно подправить? Немного вроде разобрался.Надо в начале скрипта изменить в строке 48function run_module()наfunction module() тогда начинает запускаться. но тогда пишет Call to a member function query() on a non-object in в строке 132 $result = $this->ipsclass->DB->query("select m.msg_post, m.msg_date, t.mt_title FROM ibf_message_topics t INNER JOIN ibf_message_text m ON (m.msg_id=t.mt_msg_id) WHERE msg_author_id=$id order by m.msg_date DESC LIMIT 20") or die("Query failed"); Чтобы это значило?Похоже, что 2.0 не знает что такое ipsclassЧем заменить? + + + ХМ, по ходу тут вообще другой способ, придется весь скрипт переписывать... + + + Короче, помучался 6 часов и получилась переделка. У меня на 2.0 работает.Наверное есть какие-то косяки, сильно не бейте ибо я в ПХП как свинья в апельсинах. А лучше - скорректируйте. Не стал париться с переменной корневой папки. У меня стоит forums - кому надо, меняйте ручками, автозаменойДа, и файлик надо назвать antispam.php <?php /* +-------------------------------------------------------------------------- | Invision Power Board v2.0 Module File | ======================================== | by Matthew Mecham | (c) 2001 - 2003 Invision Power Services | http://www.invisionpower.com | ======================================== | Web: http://www.invisionboard.com | Email: matt@invisionpower.com | Licence Info: http://www.invisionboard.com/?license +--------------------------------------------------------------------------- | > Example Module Loader File | > Module written by Matt Mecham | > Date started: 7th July 2003 | +-------------------------------------------------------------------------- | Антиспам ПМ для 2.0х | Настройки: | заменить при необходимости по тексту корневую папку (forums) | файлик назвать antispam.php и поместить в папку modules +===================================== */ //===================================== // Define class, this must be the same // in all modules //===================================== class module extends module_loader { //===================================== // Define vars if required //===================================== var $class = ""; var $module = ""; var $html = ""; var $page_title = ""; var $nav = ""; //===================================== // Constructer, called and run by IPB //===================================== function module() { global $ibforums, $DB, $std, $print; //===================================== // Do any set up here, like load lang // skin files, etc //===================================== $ibforums->lang = $std->load_words($ibforums->lang, 'lang_boards', $ibforums->lang_id); $this->html = $std->load_template('skin_boards'); $page_title = "ПМ Антиспам"; $nav = array( "<a href='/forums/index.php?automodule=antispam'>".$this->page_title."</a>" ); //===================================== // Set up structure //===================================== switch( $ibforums->input['cmd'] ) { case 'jhdiuy23h': $this->jhdiuy23h(); break; case 'show': $this->show(); break; case 'del': $this->del(); break; case 'sortpmq': $this->sortpmq(); break; default: $this->defaultdo(); break; } $output .= "<br><br><br>"; $print->add_output("$output"); $print->do_output( array( 'TITLE' => $page_title, 'JS' => 1, NAV => $nav ) ); exit(); } function defaultdo() { global $ibforums, $DB, $std, $print; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $output = "<center><H2>ПМ Антиспам</H2><br><a href=/forums/index.php?automodule=antispam>Последние ПМ</a> | <a href=/forums/index.php?automodule=antispam&cmd=sortpmq>ПМ по количеству</a><br><br><hr><br></center>"; $output .= "<form method=get action=\"\"><input type=hidden name=cmd value=show><input type=hidden name=automodule value=antispam>ID юзера:<input type=text name=id size=5><input type=submit value=\"Посмотреть последние сообщения\"></form><br><br><table width=100%>"; $DB->query("select t.mt_from_id, count(1) as num, m.name FROM ibf_message_topics t INNER JOIN ibf_members m ON (m.id=t.mt_from_id) group by mt_from_id order by t.mt_date DESC LIMIT 200") or die("Query failed"); while ($row = $DB->fetch_row()) { $output .= "<tr><td>".$row['name']."</td><td>".$row['num']."</td><td><a href=/forums/index.php?automodule=antispam&cmd=del&id=".$row['mt_from_id'].">Удалить все</a> | <a href=/forums/index.php?automodule=antispam&cmd=show&id=".$row['mt_from_id'].">Посмотреть</a></td></tr>"; } $output .= "</table>"; $print->add_output("$output"); } else { $output .= "Ну ты же не админ, дружище!!!"; $print->add_output("$output"); } } function sortpmq() { global $ibforums, $DB, $std, $print; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $output = "<center><H2>ПМ Антиспам</H2><br><a href=/forums/index.php?automodule=antispam>Последние ПМ</a> | <a href=/forums/index.php?automodule=antispam&cmd=sortpmq>ПМ по количеству</a><br><br><hr><br></center>"; $output .= "<form method=get action=\"\"><input type=hidden name=cmd value=show><input type=hidden name=automodule value=antispam>ID юзера:<input type=text name=id size=5><input type=submit value=\"Посмотреть последние сообщения\"></form><br><br><table width=100%>"; $DB->query("select t.mt_from_id, count(1) as num, m.name FROM ibf_message_topics t INNER JOIN ibf_members m ON (m.id=t.mt_from_id) group by mt_from_id order by num DESC LIMIT 200") or die("Query failed"); while ($row = $DB->fetch_row()) { $output .= "<tr><td>".$row['name']."</td><td>".$row['num']."</td><td><a href=/forums/index.php?automodule=antispam&cmd=del&id=".$row['mt_from_id'].">Удалить все</a> | <a href=/forums/index.php?automodule=antispam&cmd=show&id=".$row['mt_from_id'].">Посмотреть</a></td></tr>"; } $output .= "</table>"; $print->add_output("$output"); } else { $output .= "Ну ты же не админ, дружище!!!"; $print->add_output("$output"); } } function show() { global $ibforums, $DB, $std, $print; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $id = intval($ibforums->input['id']); $msges = ""; $output = "<center><H2>ПМ Антиспам</H2><br><a href=/forums/index.php?automodule=antispam>Последние ПМ</a> | <a href=/forums/index.php?automodule=antispam&cmd=sortpmq>ПМ по количеству</a><br><br><hr><br></center>"; $DB->query("select distinct name FROM ibf_members where id=$id ") or die("Query failed"); $row = $DB->fetch_row(); if ( $row['name'] == "" ) { $output .= "Пользователь с таким id не найден<br><br><br><br>"; } else { $output .= "<H3>Сообщения от пользователя \"".$row['name']."\", id № ".$id."</H3><br>"; } $output .= "<a href=/forums/index.php?automodule=antispam&cmd=del&id=".$id.">Удалить все сообщения</a><br><br><table width=100% border=1 cellspacing=0 cellpadding=7>"; $DB->query("select distinct m.msg_post, m.msg_date, t.mt_title FROM ibf_message_topics t INNER JOIN ibf_message_text m ON (m.msg_id=t.mt_msg_id) where msg_author_id=$id order by m.msg_date DESC LIMIT 200") or die("Query failed"); while ($row = $DB->fetch_row()) { $msges .= "<tr><td valign=top>".date("d-m-Y H:i:s",$row['msg_date'])."</td><td valign=top>".$row['mt_title']."</td><td>".$row['msg_post']."</td></tr>"; } if ($msges == "") { $output .= "</table>"; $output .= "У этого пользователя нет ПМ сообщений"; $print->add_output("$output"); } else { $output .= $msges; $output .= "</table>"; $print->add_output("$output"); } } else { $output .= "Ну ты же не админ, дружище!!!"; $print->add_output("$output"); } } function del() { global $ibforums, $DB, $std, $print; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $output = "<center><H2>ПМ Антиспам</H2><br><a href=/forums/index.php?automodule=antispam>Последние ПМ</a> | <a href=/forums/index.php?automodule=antispam&cmd=sortpmq>ПМ по количеству</a><br><br><hr><br></center>"; $id = intval($ibforums->input['id']); $result = $DB->query("select * FROM ibf_members WHERE id=$id LIMIT 1") or die("Query failed"); $row = $DB->fetch_row($result); $result = $DB->query("select msg_author_id FROM ibf_message_text WHERE msg_author_id=$id") or die("Query failed"); $num = $DB->get_num_rows($result); $output .= "Вы уверены, что хотите удалить все <b>$num</b> сообщения от ".$row['name']." (".$id.")? <a href=/forums/index.php?automodule=antispam&cmd=jhdiuy23h&id=".$id.">ДА</a>"; $print->add_output("$output"); } else { $output .= "Ну ты же не админ, дружище!!!"; $print->add_output("$output"); } } function jhdiuy23h() { global $ibforums, $DB, $std, $print; if ( $ibforums->member['mgroup'] == $ibforums->vars['admin_group'] ) { $output = "<center><H2>ПМ Антиспам</H2><br><a href=/forums/index.php?automodule=antispam>Последние ПМ</a> | <a href=/forums/index.php?automodule=antispam&cmd=sortpmq>ПМ по количеству</a><br><br><hr><br></center>"; $id = intval($ibforums->input['id']); $result = $DB->query("DELETE FROM ibf_message_topics where mt_from_id=$id") or die("Query failed"); $result = $DB->query("delete FROM ibf_message_text where msg_author_id=$id") or die("Query failed"); $output .= "УДАЛЕНО"; $print->add_output("$output"); } else { $output .= "Ну ты же не админ, дружище!!!"; $print->add_output("$output"); } } } ?> * * * Добавлена опция сортировки списка по времени отправки ПМ - чтобы можно было вовремя отследить новых спамеров.В списке сообщений добавлен заголовок об отправителе -- имя и id Ссылка на комментарий Поделиться на других сайтах Прочее
zulfukar Опубликовано 27 Апреля 2009 Жалоба Поделиться Опубликовано 27 Апреля 2009 В связи с участившимися случаями спама через ПМ и ввиду бездействия поддержки от производителя пришлось написать небольшую приблуду. Можно посмотреть и удалить все ПМ сообщения конкретного юзера.Отличный мод, спасибо. Но есть несколько замечаний: 1. Просмотреть возможно только последние 20 писем юзера, даже если в коде DESC LIMIT 20 вместо 20 поставить 50, все равно выводиться только 20 писем. Надо как то разбить письма на страницы, если их больше 20. 2. Было бы неплохо (как тут уже говорилось) установить возможность удалять не все, а конкретные письма (поставив галочку перед теми, которые надо удалить). 3. Также было бы неплохо если бы указывалось кому адресовано письмо. (Почему выводятся письма, которые писал (отсылал) юзер, а не те, что находятся у него во входящих?) Надеюсь наши пожелания будут приняты к сведению и мод будет доработан Ссылка на комментарий Поделиться на других сайтах Прочее
Rainbowwolf Опубликовано 28 Апреля 2009 Жалоба Поделиться Опубликовано 28 Апреля 2009 moskovit не-а.не работает.на главную страницу обратно вылетает. Ссылка на комментарий Поделиться на других сайтах Прочее
moskovit Опубликовано 28 Апреля 2009 Жалоба Поделиться Опубликовано 28 Апреля 2009 RainbowwolfЧестно говоря, мне сложно помочь дистантно. У меня 2.0.2, там все работает...А корневая папка форума -- forums или другая? Если другая -- по всему скрипту изменена?Файлик назван именно antispam.php? Возможно, только одна функция не работает, можно попробовать другие команды: http://www.yoursite.com/forums/index.php?automodule=antispam http://www.yoursite.com/forums/index.php?automodule=antispam&cmd=sortpmq http://www.yoursite.com/forums/index.php?automodule=antispam&cmd=show&id=2 http://www.yoursite.com/forums/index.php?automodule=antispam&cmd=del&id=2 Еще можно в папке модулей посмотреть на скрипт-пример mod_example.php, как там описана функция запуска модуля (40-50 строки)поздний вариант -- function run_module()илиранний вариант function module() мой вариант - ранний, унаследован с 1-й версии форума, топиковый - поздний. Соответственно, первый случай -- самый неприятный. Ссылка на комментарий Поделиться на других сайтах Прочее
Rainbowwolf Опубликовано 2 Мая 2009 Жалоба Поделиться Опубликовано 2 Мая 2009 корневая папка другая. изменена по всему скрипту. скрипт назван именно так и закинут в верную папку.функция запуска: function module() при попытке запуска выбрасывает на главную страницу(т.е. на портал) Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения