Перейти к контенту

[2.3.x]Удаление всех ПМ конкретного юзера


Рекомендуемые сообщения

  • 2 месяца спустя...
  • 1 месяц спустя...

Я извиняюсь заранее.

Но не поняла как ставить этот мод, напишите, пожалуйста, подробнее инструкцию для блондинок. Заранее благодарю.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

как привести в соответствие с действительностью поля в ibf_members:

new_msg

msg_total

show_popup

 

после удаления сообщений в ibf_message_topics и ibf_message_text?

 

Какие еще поля в базе затрагиваются удалением?

Ссылка на комментарий
Поделиться на других сайтах

посмотрел мод Биореактор

там похоже так же, как и в этом моде, просто удаляют сообщения из таблиц ibf_message_topics и ibf_message_text и ничего более.

 

Так как привести в порядок количество ПМ у каждого пользователя после удалений?

Ссылка на комментарий
Поделиться на других сайтах

  • 3 недели спустя...

У меня такая фигня.

Доступ к этой настройке может получить только суперадмин. Просто админ не может. Как называется группа, в которой просто администраторы находятся, если группа суперадминов называется $this->ipsclass->vars['admin_group']?

 

Все, уже разобрался, спасибо. Мануал куритрулит.

Изменено пользователем Пустота
Ссылка на комментарий
Поделиться на других сайтах

А есть полностью инструкция от А до Я как что скачать, где что поменять и как установить всё это дело? :D

 

Вопрос.

а зная собственно путь http://www.сайт/forum/index.php?automodule=spam

любой может запустить и посмотреть, почитать, удалить?

 

------

 

и ещё.

при нажатии на кнопку "просмотреть" у любого пользователя - вываливаюсь на главную страничку... ;)

Ссылка на комментарий
Поделиться на других сайтах

У меня есть некоторые планы на подобный мод. Точнее он есть, но думаю переписать.

 

sercam, посмотреть скорее всего может не любой, но не могу утверждать т.к. не видел код сего модуля. Я обычно убираю такую возможность - на всякий...

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Спасибо!

Очень нужный мод.

 

зы:

Небольшая очипятка :D

 		$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>" );

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...
  • 9 месяцев спустя...

Провёл функциональную и косметическую доработку кода сего мода. :) Вот код:

 

<?php
/*

+--------------------------------------------------------------------------
|   Invision Power Board v2.1.X Module File
|   =============================================
|   by Matthew Mecham
|   (c) 2001 - 2005 Invision Power Services, Inc.
|   http://www.invisionpower.com
|   =============================================
|   Web: http://www.invisionboard.com
|   Time: Sun, 09 Oct 2005 11:51:26 GMT
|   Release: 1a47e28f0443faa9f14d0c0a45151e54
|   Licence Info: http://www.invisionboard.com/?license
+---------------------------------------------------------------------------
|
|   > Example Module Loader File
|   > MODULE FILE (EXAMPLE)
|   > Module written by Matt Mecham
|   > Date started: Thu 14th April 2005 (17:59)
|
+---------------------------------------------------------------------------
|
|   Настройки: файлик назвать mod_antispam.php и поместить в папку modules
|
+---------------------------------------------------------------------------
version: 1.1
*/

//=====================================
// Define class, this must be the same
// in all modules
//=====================================

class module
{

   //=====================================
   // Define vars if required
   //=====================================

var $ipsclass;
var $class  = "";
var $module = "";
var $html   = "";
var $page_title = "";
var $nav = "";

var $result = "";

   //=====================================
   // Constructer, called and run by IPB
   //=====================================

   function run_module()
   {
       //=====================================
       // Do any set up here, like load lang
       // skin files, etc
       //=====================================

	$this->ipsclass->load_language('lang_boards');
        $this->ipsclass->load_template('skin_boards');

       $page_title = "ПМ Антиспам - просмотр и удаление всех ПМ конкретного пользователя";        
       $nav        = array( "<a href='".$this->ipsclass->base_url."automodule=antispam'>".$this->page_title."</a>" );

       //=====================================
       // Set up structure
       //=====================================


       switch( $this->ipsclass->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;

       }

       $this->output .= "<br><br><br>";
       $this->ipsclass->print->add_output("$this->output");
       $this->ipsclass->print->do_output( array( 'TITLE' => $page_title, 'JS' => 1, NAV => $nav ) );
       exit();
   }

   function defaultdo()    
   {
if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] )
       {

       $this->output = "<center><H2>ПМ Антиспам</H2><br><br>Вы <b>являетесь</b> Администратором - доступ разрешён. Добро пожаловать в ПМ Антиспам! <br><br><br><br><a href=".$this->ipsclass->base_url."automodule=antispam>[Последние ПМ-сообщения]</a>  |  <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=sortpmq>[Последние ПМ-сообщения с сортировкой по количеству]</a><br><br><hr><br></center>";
       $this->output .= "<center><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=6><input type=submit value=\"[Посмотреть последние сообщения]\"></form></center><br><br><table width=100%>";

$msges = "";

           $result = $this->ipsclass->DB->query("select t.mt_from_id, count(1) as num, m.members_display_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 = $this->ipsclass->DB->fetch_row($result))
           {
               $msges .= "<tr><td>".$row['members_display_name']."</td><td>".$row['num']."</td><td><a href=".$this->ipsclass->base_url."automodule=antispam&cmd=del&id=".$row['mt_from_id'].">[Удалить все]</a> | <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=show&id=".$row['mt_from_id'].">[Посмотреть]</a></td></tr>";
           }

	$this->output .= $msges;
	$this->output .= "</table>";

       }
           else
       {
           $this->output = "<center>В доступе отказано, так как Вы - НЕ являетесь Администратором!</center>";
       }
   }

   function sortpmq()    
   {
if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] )
       {
   	$msges = "";

       $this->output = "<center><H2>ПМ Антиспам</H2><br><br><a href=".$this->ipsclass->base_url."automodule=antispam>[Последние ПМ-сообщения]</a>  |  <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=sortpmq>[Последние ПМ-сообщения с сортировкой по количеству]</a><br><br><hr><br></center>";
       $this->output .= "<center><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=6><input type=submit value=\"[Посмотреть последние сообщения]\"></form></center><br><br><table width=100%>";

           $result = $this->ipsclass->DB->query("select t.mt_from_id, count(1) as num, m.members_display_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 = $this->ipsclass->DB->fetch_row($result))
           {
               $msges .= "<tr><td>".$row['members_display_name']."</td><td>".$row['num']."</td><td><a href=".$this->ipsclass->base_url."automodule=antispam&cmd=del&id=".$row['mt_from_id'].">[Удалить все]</a> | <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=show&id=".$row['mt_from_id'].">[Посмотреть]</a></td></tr>";
           }
	$this->output .= $msges;                
               $this->output .= "</table>";

       }
           else
       {

           $this->output = "<center>В доступе отказано, так как Вы - НЕ являетесь Администратором!</center>";
       }
   }

   function show()    
   {
if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] )
       {

           $id = intval($this->ipsclass->input['id']);

           $msges = "";

       $this->output = "<center><H2>ПМ Антиспам</H2><br><br><a href=".$this->ipsclass->base_url."automodule=antispam>[Последние ПМ-сообщения]</a>  |  <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=sortpmq>[Последние ПМ-сообщения с сортировкой по количеству]</a><br><br><hr><br></center>";

           $result = $this->ipsclass->DB->query("select distinct members_display_name FROM ibf_members where id=$id  ") or die("Query failed");

           $row = $this->ipsclass->DB->fetch_row($result);

           if ( $row['members_display_name'] == "" ) {
           $this->output .= "<center>Пользователь с таким ID - не найден!</center><br><br><br><br>";
           } else {
           $this->output .= "<center><H3>Сообщения от пользователя \"".$row['members_display_name']."\", ID № ".$id."</H3></center><br>";
           }


           $this->output .= "<center><a href=".$this->ipsclass->base_url."automodule=antispam&cmd=del&id=".$id.">[Удалить ВСЕ сообщения]</a></center><br><br><table width=100% border=1 cellspacing=0 cellpadding=7>";

           $result = $this->ipsclass->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 = $this->ipsclass->DB->fetch_row($result))
           {
               $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 == "")
           {
               $this->output .= "</table>";
               $this->output .= "<center>У этого пользователя - нет ПМ-сообщений!</center>";
           } else {
               $this->output .= $msges;
               $this->output .= "</table>";
           }


       }
           else
       {
           $this->output = "<center>В доступе отказано, так как Вы - НЕ являетесь Администратором!</center>";
       }


   }

   function del()    
   {
if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] )
       {

	$this->output = "<center><H2>ПМ Антиспам</H2><br><br><a href=".$this->ipsclass->base_url."automodule=antispam>[Последние ПМ-сообщения]</a>  |  <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=sortpmq>[Последние ПМ-сообщения с сортировкой по количеству]</a><br><br><hr><br></center>";
	$id = intval($this->ipsclass->input['id']);

	$result = $this->ipsclass->DB->query("select * FROM ibf_members WHERE id=$id LIMIT 1") or die("Query failed");
	$row = $this->ipsclass->DB->fetch_row($result);

	$result = $this->ipsclass->DB->query("select msg_author_id FROM ibf_message_text WHERE msg_author_id=$id") or die("Query failed");
	$num = $this->ipsclass->DB->get_num_rows($result);

	$this->output .= "<center>Вы уверены, что хотите удалить ВСЕ ПМ-сообщения (<b>$num</b>) от <b>".$row['members_display_name']."</b> (ID=".$id.") ?<br><br><a href=".$this->ipsclass->base_url."automodule=antispam&cmd=jhdiuy23h&id=".$id.">[ДА]</a> | <a href=".$this->ipsclass->base_url."automodule=antispam>[НЕТ]</a><center>";
       }
	else
       {
	$this->output = "<center>В доступе отказано, так как Вы - НЕ являетесь Администратором!</center>";
       }

   }

   function jhdiuy23h()
   {
if ( $this->ipsclass->member['mgroup'] == $this->ipsclass->vars['admin_group'] )
       {

       $this->output = "<center><H2>ПМ Антиспам</H2><br><br><a href=".$this->ipsclass->base_url."automodule=antispam>[Последние ПМ-сообщения]</a>  |  <a href=".$this->ipsclass->base_url."automodule=antispam&cmd=sortpmq>[Последние ПМ-сообщения с сортировкой по количеству]</a><br><br><hr><br></center>";
$id = intval($this->ipsclass->input['id']);

	//	$result = $this->ipsclass->DB->query("SELECT mt_to_id FROM ibf_message_topics WHERE mt_read = 0 AND mt_from_id =$id") or die("Query failed");
	//	if ( $this->ipsclass->DB->get_num_rows($result) )
	//	{
	//		$recipients = Array();
	//		while($row = $this->ipsclass->DB->fetch_row($result))
	//		{
	//			$recipients[] = $row['mt_to_id'];
	//		}
	//		$recipients = implode(",", $recipients);
	//		$this->ipsclass->DB->query("UPDATE ibf_members SET new_msg = (new_msg-1), msg_total = (msg_total-1), show_popup = '0' WHERE id IN (".$recipients.")") or die("Query failed");
	//		$this->output .= "Удаление оповещений о непрочитанных сообщениях ID's: ".$recipients." ... успешно удалены!<br><br>";
	//	}
	//	else
	//	{
	//		$recipients = "";
	//	}

           $result = $this->ipsclass->DB->query("DELETE FROM ibf_message_topics where mt_from_id=$id") or die("Query failed");
           $result = $this->ipsclass->DB->query("delete FROM ibf_message_text where msg_author_id=$id") or die("Query failed");

           $this->output .= "<center>ВСЕ сообщения выбранного Вами пользователя были успешно УДАЛЕНЫ!</center>";
       }
           else
       {
           $this->output = "<center>В доступе отказано, так как Вы - НЕ являетесь Администратором!</center>";
       }

   }
}

?>

 

как привести в соответствие с действительностью поля в ibf_members:

new_msg

msg_total

show_popup

 

после удаления сообщений в ibf_message_topics и ibf_message_text?

 

Какие еще поля в базе затрагиваются удалением?

Пробовал адаптировать именно для этого и предназначенный участок кода от этого же мода, но для IPB версии 1.2+ (исходный код находится на первой странице этой темы), но заставить его работать - пока что никак не получилось... :( Какие-то проблемы с выборкой результатов и функцией implode. Если кто хочет попытаться разобраться - смотрите в моём коде закомментированные строчки в функции "function jhdiuy23h()". Если справлюсь сам - обязательно выложу код, хотя за помощь - буду крайне признателен! ;)

Изменено пользователем SilentSlider
Ссылка на комментарий
Поделиться на других сайтах

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.