Перейти к контенту
  • 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 );
/*Перенос репутации*/

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

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

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

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

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

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

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

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

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

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

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

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

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

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