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

Массовое удаление пользователей


Вопрос

Сразу оговорюсь, в поиске была, подходящего решения не нашлось. ;)

 

Нужно добавить одно дополнительное условие в + к тем, что уже есть в "массовом удалении пользователей" - "Ведет дневник", по полю has_blog в таблице мемберов - удалять, если оно равно "0". Помогите, пожалуйста. :D

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

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

  • 0
У меня нет блогов. И однозначно не будет. А поле это было не задействовано. То есть, нигде. ;) Поэтому я его использовала, как "есть_журнал/дневник". Теперь надо убрать добрые тысяч 10 регистраций с 0 постов и не появляющихся последние N месяцев, но загвоздка в том, что есть пользователи, которые не пишут в форуме, но ведут дневник и появляются довольно редко. Потому и нужно дополнительное условие в массовое удаление. Поможешь? :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

короче надо удалить тех, у кого нет ни дневника, ни постов

ну 20 у меня нет в рабочем состоянии, поэтому наугад

./sources/admin/ad_member.php

 

1

		$ibforums->html .= $ibforums->adskin->add_td_row( array( "<b>Less than <em>n</em> posts</b>" ,
															 $ibforums->adskin->form_input( "posts", $_POST['posts'] )
													)	  );

++

		$ibforums->html .= $ibforums->adskin->add_td_row( array( "<b>Has blog</b>" ,
															 $ibforums->adskin->form_yes_no( "has_blog", $_POST['has_blog'] )
													)	  );

 

2

foreach( array('name', 'memberid', 'email','ip_address','aim_name','icq_number','yahoo','signature','posts','suspended', 'registered_first', 'registered_last','last_post_first', 'last_post_last', 'last_activity_first', 'last_activity_last','mgroup') as $bit )

here understand

...,'mgroup','has_blog'

 

3

				else if ($bit == 'posts')
			{
				$query[] = $table_prefix."posts <".$ibforums->input[$bit];
			}

++

				else if ($bit == 'has_blog')
			{
				$query[] = $table_prefix."has_blog =".intval($ibforums->input[$bit]);
			}

try

 

вообще можно подумать еще и дописать условие типа - не учитывать это поле

тогда сделать не yes_no а dropdown

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

  • 0

Спасибо!

Пробую... :)

 

Добавила еще кучу запросов, чтоб заодно подчистить таблицы дневников:

В ad_member.php ф-ция function member_delete_do($id):

после:

		//-----------------------------------------
	// Convert their posts and topics
	// into guest postings..
	//-----------------------------------------
	$DB->do_update( 'posts' , array( 'author_id'  => 0 ), "author_id".$mids );
	$DB->do_update( 'topics', array( 'starter_id' => 0 ), "starter_id".$mids );

это:

		//-----------------------------------------
	// Convert their comments and votes into guest postings..
	//-----------------------------------------
	$DB->do_update( 'jcomments' , array( 'author_id'  => 0 ), "author_id".$mids );
	$DB->do_update( 'jvoters', array( 'member_id' => 0 ), "member_id".$mids );

и после этого:

		//-----------------------------------------
	// Delete from validating..
	//-----------------------------------------
	$DB->simple_exec_query( array( 'delete' => 'validating', 'where' => "member_id".$mids ) );
	$DB->simple_exec_query( array( 'delete' => 'members'   , 'where' => "id".$mids ) );

это:

		//-----------------------------------------
	// Delete from journals
	//-----------------------------------------
	$DB->simple_exec_query( array( 'delete' => 'jmembers'   , 'where' => "id".$mids ) );
	$DB->simple_exec_query( array( 'delete' => 'jfriends'   , 'where' => "friend_id".$mids." or member_id".$mids) );
	$DB->simple_exec_query( array( 'delete' => 'jfavorite'  , 'where' => "favorite_id".$mids." or member_id".$mids) );
	$DB->simple_exec_query( array( 'delete' => 'jinterest'  , 'where' => "journal_id".$mids ) );
	$DB->simple_exec_query( array( 'delete' => 'jtracker'   , 'where' => "member_id".$mids ) );

 

Воть. Мало ли - пригодится кому... :D Чтоб уж совсем отовсюду убрать... ;) Вроде, ничего не забыла...

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

  • 0
Что-то не так. Три десятка дневников все-таки удаляются... Почему? То есть, условие про дневники пропускается. :D Изменено пользователем Allure
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Справилась. :D

 

В п.1 добавляем не

		$ibforums->html .= $ibforums->adskin->add_td_row( array( "<b>Has blog</b>" ,
															 $ibforums->adskin->form_yes_no( "has_blog", $_POST['has_blog'] )
													)	  );

а вот это:

		$ibforums->html .= $ibforums->adskin->add_td_row( array( "<b>Has Blog</b>" ,
															$ibforums->adskin->form_dropdown( "has_blog", array( 0=>array('0','Не важно'),1=>array('yes', 'Да'),2=>array('no', 'Нет') ), $_POST['has_blog'] )
													)		);

И в п.3 не

				else if ($bit == 'has_blog')
			{
				$query[] = $table_prefix."has_blog =".intval($ibforums->input[$bit]);
			}

а вот это:

				else if ($bit == 'has_blog')
			{
				if ( $ibforums->input[$bit] == 'yes' )
				{
					$query[] = $table_prefix."has_blog > 0";
				}
				else if ( $ibforums->input[$bit] == 'no' )
				{
					$query[] = $table_prefix."has_blog < 1";
				}
			}

И все работает. ;)

 

Спасибо!

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

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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