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

Перемещение модератором пользователя в группу Забаненные


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

Позволим модераторам перемещать пользоваеля в группу забаненные

 

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

 

здесь же все просто

 

модераторы могут перемещать пользователя в группу забанненые и возвращать оттуда

 

можно сделать изменения по принципу возвращения, если существует перенос из группы в группу при наборе определенного количества сообщений

 

1.изменяем warn.php

 

function do_warn()

 

найти

 

if ( ! $this->ipsclass->vars['warn_past_max'] )
	{
	 $this->ipsclass->vars['warn_min'] = $this->ipsclass->vars['warn_min'] ? $this->ipsclass->vars['warn_min'] : 0;
	 $this->ipsclass->vars['warn_max'] = $this->ipsclass->vars['warn_max'] ? $this->ipsclass->vars['warn_max'] : 10;

  $warn_level = intval($this->warn_member['warn_level']);

  if ( $this->ipsclass->input['level'] == 'add' )
  {
if ( $warn_level >= $this->ipsclass->vars['warn_max'] )
{
 $err = 1;
}
  }
  else
  {
if ( $warn_level <= $this->ipsclass->vars['warn_min'] )
{
 $err = 1;
}
  }

  if ( $err == 1 )
  {
$this->ipsclass->Error( array( LEVEL => '1', MSG => 'no_warn_max' ) );
  }
	}

 

заменить на

 

  $block="";
 if ( $this->ipsclass->input['doblock'] == 'block' )
 {
  $block=1;
 }
 elseif ( $this->ipsclass->input['doblock'] == 'unblock' )
 {
  $block=2;
 }
 else
 {
 $block=0;
 }
 if ($block==0){
	if ( ! $this->ipsclass->vars['warn_past_max'] )
	{
	 $this->ipsclass->vars['warn_min'] = $this->ipsclass->vars['warn_min'] ? $this->ipsclass->vars['warn_min'] : 0;
	 $this->ipsclass->vars['warn_max'] = $this->ipsclass->vars['warn_max'] ? $this->ipsclass->vars['warn_max'] : 10;

  $warn_level = intval($this->warn_member['warn_level']);

  if ( $this->ipsclass->input['level'] == 'add' )
  {
if ( $warn_level >= $this->ipsclass->vars['warn_max'] )
{
 $err = 1;
}
  }
  else
  {
if ( $warn_level <= $this->ipsclass->vars['warn_min'] )
{
 $err = 1;
}
  }

  if ( $err == 1 )
  {
$this->ipsclass->Error( array( LEVEL => '1', MSG => 'no_warn_max' ) );
  }
	}
 }

 

найти в этой же функции

 

  //-----------------------------------------
 // Update member
 //-----------------------------------------

 $warn_level = intval($this->warn_member['warn_level']);

 if ( $this->ipsclass->input['level'] == 'add' )
 {
  $warn_level++;
 }
 else
 {
  $warn_level--;
 }

 if ( $warn_level > $this->ipsclass->vars['warn_max'] )
 {
  $warn_level = $this->ipsclass->vars['warn_max'];
 }

 if ( $warn_level < intval($this->ipsclass->vars['warn_min']) )
 {
  $warn_level = 0;
 }

 $this->ipsclass->DB->do_update( 'members', array (
		'mod_posts'	 => $mod_queue,
		'restrict_post' => $restrict_post,
		'temp_ban'	  => $susp,
		'warn_level'	=> $warn_level,
		'warn_lastwarn' => time(),
   ) , "id={$this->warn_member['id']}"  );

 

заменить на

 

  //-----------------------------------------
 // Update member
 //-----------------------------------------

 if ($block==0)
 {
 $warn_level = intval($this->warn_member['warn_level']);

 if ( $this->ipsclass->input['level'] == 'add' )
 {
  $warn_level++;
 }
 else
 {
  $warn_level--;
 }

 if ( $warn_level > $this->ipsclass->vars['warn_max'] )
 {
  $warn_level = $this->ipsclass->vars['warn_max'];
 }

 if ( $warn_level < intval($this->ipsclass->vars['warn_min']) )
 {
  $warn_level = 0;
 }
 }  
 if ($block==1)
 {  
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 5,
		 ) , "id={$this->warn_member['id']}"  );
 }
 if ($block==2)
 {
 if ($this->warn_member['posts']<3)
 {
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 3,
  ) , "id={$this->warn_member['id']}"  );
 }
 else
 {
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 23,
  ) , "id={$this->warn_member['id']}"  );
 }
 }
 elseif ($block==0){
 $this->ipsclass->DB->do_update( 'members', array (
		'mod_posts'	 => $mod_queue,
		'restrict_post' => $restrict_post,
		'temp_ban'	  => $susp,
		'warn_level'	=> $warn_level,
		'warn_lastwarn' => time(),
   ) , "id={$this->warn_member['id']}"  );
}

 

как видите, здесь у меня две группы, куда возвращаем мембера

 

одна с номером 3 - пользователи

 

другая - 23 - активные пользователи(у которых больше 2 сообщений (антибот)

 

а группа с номером 5 - Забанненые

 

в этом же файле, но в функции

 

function show_form($errors="")

 

находим

 

   $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_suspend($ban_arr, $ban_extra);
 }

 

добавляем ПЕРЕД

 

   $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_do_block();

 

мы добавили этот вывод в секцию, выводимую только для тех, у кого $this->can_ban, тоесть для админов и супермодеров(если у последних $this->ipsclass->vars['warn_gmod_ban'] == 1)

 

 

 

И создаем в АДМИНКА--ВНЕШНИЙ ВИД--ИЗМЕНИТЬ ФРАГМЕНТЫ--skin_mod

 

Новый шаблон с именем warn_do_block

 

без входящих переменных с содержанием

 

	 <tr>
  <td class="pformleftw"><b>Переместить в группу заблокированные</b></td>
  <td class="pformright">
   <input type="radio" name="doblock" id="block" class="radiobutton" value="block" /><label for="block" class="warnbad"><b>Да</b></label>
	<br />
   <input type="radio" name="doblock" id="unblock" class="radiobutton" value="unblock" /><label for="unblock" class="warngood"><b>Нет</b></label>
  </td>
 </tr>

 

 

 

И самое главное!

 

изменяем шаблон warn_header

 

находим

 

type={ipb.input['type']}

 

и дабавляем сразу после этого следующее:

 

&doblock={ipb.input['doblock']}

 

 

 

вот так

 

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

 

создайте тестюзера и помучайте его

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

  • 3 месяца спустя...
А для 1.3.x реально сделать?
Ссылка на комментарий
Поделиться на других сайтах

есть же мод быстрого перемещения в любые группы... __http://ibresource.ru/forum/topic377.html___
Ссылка на комментарий
Поделиться на других сайтах

  • 3 месяца спустя...

Так же если у вас только одна группа пользователей, тоесть нет группы активных пользователей, то при изменении

  //-----------------------------------------
 // Update member
 //-----------------------------------------
.......

 

Нужно использовать следующий код:

 ...(как в обычном листинге)...
 if ($block==2)
 {
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 3,
  ) , "id={$this->warn_member['id']}"  );
 }
...(как в обычном листинге)...

вместо:

  if ($block==2)
 {
 if ($this->warn_member['posts']<3)
 {
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 3,
  ) , "id={$this->warn_member['id']}"  );
 }
 else
 {
 $this->ipsclass->DB->do_update( 'members', array (
		'mgroup'	 => 23,
  ) , "id={$this->warn_member['id']}"  );
 }
 }

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

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

Сделал внешним файлом возможность посмотреть ники забаненых на текущий момент:

<?php
require 'conf_global.php';
Error_Reporting(1+2+4+8);
// Connect to the Database
if (!($link = mysql_pconnect($INFO['sql_host'], $INFO['sql_user'], $INFO['sql_pass'])))
{
echo( sprintf( "Нет соединения С базой данных!", mysql_error() ) );
exit() ;
} ;

echo "<html><head><title>Vesvalo.AA => Кто в банке?</title></head><body><table border=1 align=center><tr><th>Ник</th><th>RO</th><th>Премодерация</th><th>Бан</th></tr>";
$query_messa= "SELECT name, restrict_post, mod_posts, temp_ban FROM `ibf_members` WHERE (restrict_post <>0 AND restrict_post <> 'NULL') or (mod_posts <>0 AND mod_posts <> 'NULL') or (temp_ban <>0 AND temp_ban <> 'NULL')";
if (!($result_messa = mysql_db_query($INFO['sql_database'], $query_messa))){    echo  mysql_errno(), mysql_error();  return 0 ; }
while($row_messa = mysql_fetch_array($result_messa))
{
echo "<tr>";
echo "<td>";
echo $row_messa['name'];
echo "</td>";
if($row_messa['restrict_post']=="0" or $row_messa['restrict_post']=="NULL"){echo "<td align=center>V</td>";}
else{echo "<td> </td>";};

if($row_messa['mod_posts']=="0" or $row_messa['mod_posts']=="NULL"){echo "<td align=center>V</td>";}
else{echo "<td> </td>";};

if($row_messa['temp_ban']=="0" or $row_messa['temp_ban']=="NULL"){echo "<td align=center>V</td>";}
else{echo "<td> </td>";};
echo "</tr>";
};
echo "</table></body></html>";
?>

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

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

Тоесть например после 5 сообщений пользователь уходить в группу Заблокированные или как?

 

мы добавили этот вывод в секцию, выводимую только для тех, у кого $this->can_ban, тоесть для админов и супермодеров(если у последних $this->ipsclass->vars['warn_gmod_ban'] == 1)

что это ? и куда добовлять? и зачем нужно? =))

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

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

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

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