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

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


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

Видел подобную тему про 1.2.

Так вот, хотлеось бы, чтобы при отбирании права постинга юзер помещался в группу "Забаненные", а по истечении времени бана, возвращался в предыдущую группу.

 

 

Выполняем SQL-запрос.

ALTER TABLE ibf_members ADD COLUMN mgroup_prev integer;

 

файл. warn.php

Ищем

class warn {

var $output	= "";
var $topic	 = array();
var $forum	 = array();

 

Добавляем после

	//ban group
var $grp_id = 5;
var $grp_id_prev = "";
//ban group

 

Ищем

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

 

Добавляем после

//group_ban
	//ban - move to group 5 and backing up the current group
			if (($restrict_post != 0) or ($restrict_post != null ))
		{
			$grp_id = 5;
		$grp_id_prev = $this->warn_member['mgroup'];
	 }
	 //unban - move to previous group, if no ban, leave current.
 			if (($restrict_post == 0) or ($restrict_post == null ))
		{
		$grp_id = $this->warn_member['mgroup'];
		//$grp_id_prev = null;	
		if (($this->warn_member['mgroup_prev'] != null) and ($this->warn_member['mgroup_prev'] != '0'))
		{
		$grp_id = $this->warn_member['mgroup_prev'];
	  }
	 }


  //group_ban. in next sectoion - 'mgroup', 'mgroup_prev' added

 

Ищем

		$this->ipsclass->DB->do_update( 'members', array (
									  'mod_posts'	 => $mod_queue,
									  'restrict_post' => $restrict_post,
									  'temp_ban'	  => $susp,

 

 

Заменяем на.

		$this->ipsclass->DB->do_update( 'members', array (
									  'mod_posts'	 => $mod_queue,
									  'restrict_post' => $restrict_post,
									  'temp_ban'	  => $susp,
									  'mgroup'		=> $grp_id,
									  'mgroup_prev'		=> $grp_id_prev,

 

 

post.php

ищем

 

 

				if ( $this->ipsclass->member['restrict_post'] == 1 )
			{
				$this->ipsclass->Error( array( LEVEL => 1, MSG => 'posting_off') );
			}

И удаляем(или комментируем)

 

Ищем

					//-----------------------------------------
				// Update this member's profile
				//-----------------------------------------

				$this->ipsclass->DB->simple_construct( array( 'update' => 'members',
															  'set'	=> 'restrict_post=0',
															  'where'  => "id=".intval($this->ipsclass->member['id'])
													)	   );

				$this->ipsclass->DB->simple_exec();

Заменяем на

//group ban
									//-----------------------------------------
				// Update this member's profile
				//-----------------------------------------
$this->ipsclass->DB->simple_construct( array( 'update' => 'members',
															  'set'	=> 'restrict_post=0, mgroup='.$this->ipsclass->member['mgroup_prev'],

															  'where'  => "id=".intval($this->ipsclass->member['id'])
													)	   );

				$this->ipsclass->DB->simple_exec();//group ban

 

Ищем

				else
			{
				$this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'posting_off_susp', 'EXTRA' => $this->ipsclass->get_date($post_arr['date_end'], 'LONG') ) );
			}

И удаляем.

 

 

class_session.php

 

Ищем

			$this->ipsclass->DB->build_query( array( 'select' => "id, name, mgroup, member_login_key, email, restrict_post, view_sigs, view_avs, view_pop, view_img, auto_track,
															  mod_posts, language, skin, new_msg, show_popup, msg_total, time_offset, posts, joined, last_post, subs_pkg_chosen,
															  ignored_users, login_anonymous, last_visit, last_activity, dst_in_use, view_prefs, org_perm_id, mgroup_others, temp_ban, sub_end,
															  has_blog, members_markers, members_editor_choice, members_auto_dst, members_display_name, members_created_remote,
															  members_cache, members_disable_pm",
												 'from'   => 'members',
												 'where'  => 'id='.$member_id ) );

 

Заменяем на

$this->ipsclass->DB->build_query( array( 'select' => "*",
												 'from'   => 'members',
												 'where'  => 'id='.$member_id ) );

 

 

Готово.

 

Итак, отбирая права постинга, мы помещаем юзера в группу "Забаненные", у которой настроены права так, как Вам хочется.

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

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

Не могу понять, это для какой версии?

 

Я не могу найти вот это:

 

if ( $warn_level < intval($this->ipsclass->vars['warn_min']) )

{

$warn_level = 0;

}

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

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

Это писалось для 2.1.х.

Для других версий я писать не буду, ибо их не имею, но вы можете написать по аналогии.

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

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

Странно, но у меня не работает. Версия форума 2.1.4.

При бане юзер как был в своей группе, так в ней и остаётся. И бан перестал автоматически сниматься.

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

  • 3 года спустя...

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

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

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

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

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

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

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

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

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

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

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