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

Возможно ли поменять ID пользователя ?


Caniball

Вопрос

Возможно ли поменять ID пользователя через админку также как и изменение количества постов !?

т.е. просто написать свободную цифру !?

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

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

  • 0
а ID нельзя.

Можно SQL-запросом, но наверное не нужно, потому и не предусмотрено интерактивными средствами.

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

  • 0

одним тут не обойдешься.

тут надо какую-нить систему ребилда придумать.

 

создать временные таблицы для всех таблиц, связанных с members, сделать truncate оригиналов и по записям добавлять в них содержимое остальных таблиц по принципу: добавил пользователя - добавь и связанные с ним данные.

а потом временное барахло удалить.

 

муторно.

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

  • 0

кароч легче оставить всё как было !

всем спасибо !

 

прост мы тут проект сделали !

РОК ФОРУМ АЗЕРБАЙДЖАНА !

заходите если хотите !

spam

или

spam

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

  • 0

Увы тот мод не работает ! я скачал а тама такое сообщение :

 

This mod was removed as a critical bug was found and i am fixing it right now in 2 days it iwll be again released ,if you need any support or information you can contact FuSoYa ,he waiting for any requests on this mod while i am abroad i will be out for 3 days then when back iwill fix the mod

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

  • 0
http://mods.invisionize.com/db/index.php/f/6835 Изменено пользователем LE_TALLEC
Ссылка на комментарий
Поделиться на других сайтах

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

  • 0

Русифицированный мод с инвизионайза, добавляет в админке, при редактировании пользователя, в контексное меню строку "Изменить ID пользователя"

Change_Member_ID_For_2.1

Made by Bulk for IPB 2.0 upgraded to 2.1 by vadim88

Edited by smash_TeAm™

Редактируем sources/action_admin/member.php

Находим:

		//-----------------------------------------
		// Delete / Prune
		//-----------------------------------------
		case 'member_delete':
			$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' );
			$this->member_delete();
			break;

Добпвляем дальше:

		//-----------------------------------------
		// Change Member ID
		//-----------------------------------------
                                              case 'changememid':
                                             $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
                              $this->member_idchange_start();
                                             break;
                                            case 'dochangememid':
                                             $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
                              $this->member_idchange_complete();
                              break;


Находим:

//-----------------------------------------
//
// PASS: START
//
//-----------------------------------------

Добавляем выше:

/*-------------------------------------------------------------------------*/
//
// Change Member ID - Complete
//
/*-------------------------------------------------------------------------*/

function member_idchange_complete()
{


$old_mid = intval(trim($this->ipsclass->input['mid']));


//-----------------------------------------
// Check
//-----------------------------------------

if ($this->ipsclass->input['mid'] == "")
{
	$this->ipsclass->admin->error("Вы дожны указать правильный ID, вернитесь и попробуйте снова");
}

if ($this->ipsclass->input['new_mid'] == "")
{
	$this->member_idchange_start("Вы должны ввести новый ID для этого пользователя");
	exit();
}

//-----------------------------------------
// Select
//-----------------------------------------

$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where' => "id=".intval($this->ipsclass->input['mid']) ) );
$this->ipsclass->DB->simple_exec();

if ( ! $member = $this->ipsclass->DB->fetch_row() )
{
	$this->ipsclass->admin->error("Не могу определить ID в базе данных пользователей");
}

if ($this->ipsclass->input['new_mid'] == $member['id'])
{
	$this->member_idchange_start("Новый ID такой же как и текущий!");
	exit();
}

//-----------------------------------------
// Better make sure this ID isnt taken. Would screw stuff up nicley.
//-----------------------------------------

$new_mid = trim($this->ipsclass->input['new_mid']);

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

if ( $this->ipsclass->DB->get_num_rows() )
{
	$this->member_idchange_start("ID '$new_mid' используется, выберите другой");
	exit();
}

//-----------------------------------------
// I cant think of anything else to check, so we better assume its ok
// to change the ID the new one. Lets get to it.
//-----------------------------------------

$this->ipsclass->DB->do_update( 'admin_logs', 		array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'admin_sessions', 	array( 'session_member_id' => $new_mid ), 	"session_member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'announcements', 	array( 'announce_member_id' => $new_mid ), 	"announce_member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'attachments', 		array( 'attach_member_id' => $new_mid ), 	"attach_member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'calendar_events', 	array( 'userid' => $new_mid ), 				"userid=".$old_mid );
$this->ipsclass->DB->do_update( 'contacts', 		array( 'contact_id' => $new_mid ), 			"contact_id=".$old_mid );
$this->ipsclass->DB->do_update( 'contacts', 		array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'email_logs', 		array( 'from_member_id' => $new_mid ), 		"from_member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'email_logs', 		array( 'to_member_id' => $new_mid ), 		"to_member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'forum_tracker', 	array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'forums', 			array( 'last_poster_id' => $new_mid ), 		"last_poster_id=".$old_mid );
$this->ipsclass->DB->do_update( 'member_extra', 	array( 'id' => $new_mid ), 					"id=".$old_mid );
$this->ipsclass->DB->do_update( 'members', 			array( 'id' => $new_mid ), 					"id=".$old_mid );
$this->ipsclass->DB->do_update( 'members_converge', array( 'converge_id' => $new_mid ), 		"converge_id=".$old_mid );
$this->ipsclass->DB->do_update( 'message_text', 	array( 'msg_author_id' => $new_mid ), 		"msg_author_id=".$old_mid );
$this->ipsclass->DB->do_update( 'message_topics', 	array( 'mt_from_id' => $new_mid ), 			"mt_from_id=".$old_mid );
$this->ipsclass->DB->do_update( 'message_topics', 	array( 'mt_to_id' => $new_mid ), 			"mt_to_id=".$old_mid );
$this->ipsclass->DB->do_update( 'message_topics', 	array( 'mt_owner_id' => $new_mid ), 		"mt_owner_id=".$old_mid );
$this->ipsclass->DB->do_update( 'moderator_logs', 	array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'moderator_logs', 	array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'moderators', 		array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'pfields_content', 	array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'polls', 			array( 'starter_id' => $new_mid ), 			"starter_id=".$old_mid );
$this->ipsclass->DB->do_update( 'posts', 			array( 'author_id' => $new_mid ), 			"author_id=".$old_mid );
$this->ipsclass->DB->do_update( 'search_results', 	array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'sessions', 		array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'topics', 			array( 'starter_id' => $new_mid ), 			"starter_id=".$old_mid );
$this->ipsclass->DB->do_update( 'topics', 			array( 'last_poster_id' => $new_mid ), 		"last_poster_id=".$old_mid );
$this->ipsclass->DB->do_update( 'topics_read', 		array( 'read_mid' => $new_mid ), 			"read_mid=".$old_mid );
$this->ipsclass->DB->do_update( 'tracker', 			array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'validating', 		array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'voters', 			array( 'member_id' => $new_mid ), 			"member_id=".$old_mid );
$this->ipsclass->DB->do_update( 'warn_logs', 		array( 'wlog_mid' => $new_mid ), 			"wlog_mid=".$old_mid );

// These tables won't exist if you don't have the subs manager. Better check first.
if (is_dir( ROOT_PATH.'modules/subsmanager' ) )
{
	$this->ipsclass->DB->do_update( 'subscription_logs', 	array( 'sublog_member_id' => $new_mid ), 	"sublog_member_id=".$old_mid );
	$this->ipsclass->DB->do_update( 'subscription_trans', 	array( 'subtrans_member_id' => $new_mid ), 	"subtrans_member_id=".$old_mid );
}




$this->ipsclass->admin->save_log("Изменён ID пользователя {$member['name']} с '{$member['id']}' на '$new_mid'");


//-----------------------------------------
// Redirect
//-----------------------------------------

$page_query = "";

foreach( array('name','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','namewhere','gotcount', 'fromdel') as $bit )
{
	$page_query .= '&'.$bit.'='.trim($this->ipsclass->input[ $bit ]);
}

$this->ipsclass->admin->done_screen("ID пользователя изменён", "Поиск пользователя", "act=mem".$page_query, "redirect" );
}
/*-------------------------------------------------------------------------*/
//
// Change Member ID - Start
// 
/*-------------------------------------------------------------------------*/

function member_idchange_start($message="")
{



	$this->ipsclass->admin->page_title  = "Сменить ID пользователя";
	$this->ipsclass->admin->page_detail = "Вы можете изменить ID этого пользователя";

//-----------------------------------------
// check
//-----------------------------------------

if ($this->ipsclass->input['mid'] == "")
{
	$this->ipsclass->admin->error("Вы дожны указать правильный ID, вернитесь и попробуйте снова");
}

$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where' => "id=".intval($this->ipsclass->input['mid']) ) );
$this->ipsclass->DB->simple_exec();

if ( ! $member = $this->ipsclass->DB->fetch_row() )
{
	$this->ipsclass->admin->error("Не могу определить ID в базе данных пользователей");
}

//-----------------------------------------
// Redirect
//-----------------------------------------

$page_array = array( 1 => array( 'code'  , 'dochangememid'  ),
					 2 => array( 'act'   , 'mem'       ),
					 3 => array( 'mid'   , $this->ipsclass->input['mid']  ),
4 => array( 'section', $this->ipsclass->section_code ),
				   );


foreach( array('name','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','namewhere','gotcount', 'fromdel') as $bit )
{
	$page_array[] = array( $bit, trim($this->ipsclass->input[ $bit ]) );
} 

$this->ipsclass->html .= $this->ipsclass->adskin->start_form( $page_array );

//-----------------------------------------
// start form
//-----------------------------------------

$this->ipsclass->adskin->td_header[] = array( " "  , "40%" );
$this->ipsclass->adskin->td_header[] = array( " "  , "60%" );

$this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Изменить ID пользователя" );

if ($message != "")
{
	$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Ошибка:</b>" ,
															  "<b><span style='color:red'>$message</span></b>",
													 )      );
}


$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Текущий ID пользователя</b>" ,
														 $member['id'],
												)      );

$this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Введите новый ID</b>" ,
														 $this->ipsclass->adskin->form_input( "new_mid", $this->ipsclass->input['new_mid'] )
												)      );

$this->ipsclass->html .= $this->ipsclass->adskin->end_form("Сменить ID этого пользователя");

$this->ipsclass->html .= $this->ipsclass->adskin->end_table();

$this->ipsclass->admin->output();
}


Находим:

"<img src='{$this->ipsclass->skin_url}/images/memsearch_changename.gif' style='margin:4px;' border='0' /> " +
									   "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=change_display_name&mid={$r['id']}{$page_query}'>Изменить видимое имя пользователя</a>",

Добавляем дальше:

"<img src='{$this->ipsclass->skin_url}/images/memsearch_changename.gif' style='margin:4px;' border='0' /> " +
									   "<a href='{$this->ipsclass->base_url}&{$this->ipsclass->form_code}&code=changememid&mid={$r['id']}{$page_query}'>Изменить ID пользователя</a>",

Сохраняем, заливаем.

В принципе мод готов к употреблению, НО !!! Если у вас стоит мод XT_Reputation_System_2_1_x Делаем дальше:

Находим:

$this->ipsclass->DB->do_update( 'warn_logs', 		array( 'wlog_mid' => $new_mid ), 			"wlog_mid=".$old_mid );

Добавляем дальше:

/*Перенос репутации*/
$this->ipsclass->DB->do_update( 'reputation',		array( 'from_user'  => $new_mid ),			"from_user=".$old_mid );
$this->ipsclass->DB->do_update( 'reputation',		array( 'to_user'  => $new_mid ),			"to_user=".$old_mid );
/*Перенос репутации*/

Вот теперь всё!

Сохраняем и заливаем.

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

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

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

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

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

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

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

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

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

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

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

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