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

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


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

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

 

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

 

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

 

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

 

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

 

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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

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

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

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