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

Управление бот-аккаунтами и поиск двойников


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

Выкладывал уже на ИПБСкинс. Небольшие глюки с массовым удалением пользователей в последнем релизе, пока не нашёл времени пофиксить. В остальном версия рабочая.
Ссылка на комментарий
Поделиться на других сайтах

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

:D Просто создайте php-файл со следующим содержимым и выполните его:

 

<?
// СКРИПТ для обнаружения "двойников" и объединения их с "оригинальными" пользователями в IPB 2.1.7.
// В случае, если на одного "оригинального" пользователя больше одного "двойника", СКРИПТ следует 
// запускать до тех пор, пока "двойников" не останется (по окончании выполнения СКРИПТ будет выводить 
// "Обработано двойников: 0"). Поэтому запускайте СКРИПТ как минимум 2 раза.
// Пропишите параметры подключения к БД (ниже), закачайте на свой сервер и выполните СКРИПТ через браузер.
// Не забывайте делать копию (дамп) базы данных перед использованием скрипта!
// За последствия выполнения СКРИПТА автор ответственности не несет.
// (C) AdminAS, 2007.


// подключение к базе данных 
$dbhostn = "localhost"; // хост
$dbusern = "root";	  // логин
$dbpassn = "";		  // пароль
$dbnamen = "ipb";	   // название базы данных
$tprefix = "ibf_";	  // префикс таблиц базы данных

mysql_connect("$dbhostn","$dbusern","$dbpassn");
mysql_select_db("$dbnamen");


$count_members = 0;
$count_twins = 0;

// поиск "оригиналов"
//$statement = "SELECT id, name FROM ".$tprefix."members";
$statement = "SELECT t1.* FROM ".$tprefix."members as t1, ".$tprefix."members as t2 WHERE t1.name=t2.name AND t1.id<>t2.id";
$sth = mysql_query($statement);
while ($hash_ref = mysql_fetch_row($sth))
{
$id_user = $hash_ref[0];
$name_user = $hash_ref[1];

// поиск "двойников"

$statementx = "SELECT min(id) FROM ".$tprefix."members WHERE name LIKE '$name_user'";
$sthx = mysql_query($statementx);
$hash_refx = mysql_fetch_row($sthx);
$id_member = $hash_refx[0];

$statementy = "SELECT max(id) FROM ".$tprefix."members WHERE name LIKE '$name_user'";
$sthy = mysql_query($statementy);
$hash_refy = mysql_fetch_row($sthy);
$id_member_twin = $hash_refy[0];

if ($id_member != $id_member_twin)
{
// "двойник" найден

	// внесение необходимых изменений в БД

	$statementy = "UPDATE ".$tprefix."forums SET last_poster_id = '$id_member' WHERE last_poster_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."message_text SET msg_author_id = '$id_member' WHERE msg_author_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."message_topics SET mt_from_id = '$id_member' WHERE mt_from_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."message_topics SET mt_to_id = '$id_member' WHERE mt_to_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."message_topics SET mt_owner_id = '$id_member' WHERE mt_owner_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."polls SET starter_id = '$id_member' WHERE starter_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."posts SET author_id = '$id_member' WHERE author_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."topic_markers SET marker_member_id = '$id_member' WHERE marker_member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."topics SET starter_id = '$id_member' WHERE starter_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."topics SET last_poster_id = '$id_member' WHERE last_poster_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."voters SET member_id = '$id_member' WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."contacts SET member_id = '$id_member' WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."search_result SET member_id = '$id_member' WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."tracker SET member_id = '$id_member' WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "UPDATE ".$tprefix."validating SET member_id = '$id_member' WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);


	// удаление "двойника"

	$statementy = "DELETE FROM ".$tprefix."member_extra WHERE id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "DELETE FROM ".$tprefix."members WHERE id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "DELETE FROM ".$tprefix."members_converge WHERE converge_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);

	$statementy = "DELETE FROM ".$tprefix."pfields_content WHERE member_id = '$id_member_twin'";
	$sthy = mysql_query($statementy);


	// счетчик "двойников"
	$count_twins++;
}
else
{
// "двойник" НЕ найден

}

// счетчик "оригиналов"
$count_members++;
}

echo "Завершено! Обработано всего: $count_members записей. Обработано двойников: $count_twins. Необходимые изменения внесены в базу данных. Двойники удалены.";

mysql_close();
?>

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

  • 1 год спустя...
  • 1 месяц спустя...
  • 6 месяцев спустя...

Может кто помочь переписать этот мод для 2.3.6, или хотябы подсказать как переписать самому.

Например в 2.0, было так:

$ibforums->adskin->td_header[] = array( " "  , "60%" );
$ibforums->html .= $ibforums->adskin->start_table( "Find bots & twins" );

 

Как это будет в 2.3.6 ?

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

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

для 2.3.х так и не появился ?

Соединил 2 форума, а вот теперь нужно пользователей соединить

Может кто знает такую прогу или эту кто доделал ?

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

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

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

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

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

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