Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Синхронизация пользователей нескольких форумов.

Опубликовано:

Например есть два форума A и B..

 

 

Открываем conf_global.php форума A, находим:

 

$INFO['sql_host']			=	'localhost';
$INFO['sql_database']			=	'ForumsA';
$INFO['sql_user']			=	'ForumsA';
$INFO['sql_pass']			=	'ForumsA';
$INFO['sql_tbl_prefix']			=	'ibf_';

 

Добавляем ниже:

 

$INFO['sql_host2']			=	'localhost';
$INFO['sql_database2']			=	'ForumsB';
$INFO['sql_user2']			=	'ForumsB';
$INFO['sql_pass2']			=	'ForumsB';
$INFO['sql_tbl_prefix2']			=	'ibf_';

 

Сохраняем, закачиваем обратно на сервер.

 

 

Открываем файл ./modules/ipb_member_sync.php, находим:

 

function on_create_account($member, $converge)
{
	global $ipsclass;

 

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

 

$ipsclass->DB2 = new db_driver;

	$ipsclass->DB2->obj['sql_database']	 = $ipsclass->vars['sql_database2'];
	$ipsclass->DB2->obj['sql_user']		 = $ipsclass->vars['sql_user2'];
	$ipsclass->DB2->obj['sql_pass']		 = $ipsclass->vars['sql_pass2'];
	$ipsclass->DB2->obj['sql_host']		 = $ipsclass->vars['sql_host2'];
	$ipsclass->DB2->obj['sql_tbl_prefix']   = $ipsclass->vars['sql_tbl_prefix2'];
	$ipsclass->DB2->obj['use_shutdown']	 = USE_SHUTDOWN;
	$ipsclass->DB2->connect();

	$ipsclass->DB2->do_insert( 'members_converge', $converge );

	//-----------------------------------------
	// Insert: MEMBERS
	//-----------------------------------------
$check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'id','from'=>'members','where'=>"id=".$this->ipsclass->member['id']));
if($check['id'])
{
$this->ipsclass->DB2->close_db();
$this->ipsclass->DB->connect();
	$this->ipsclass->lang['asdf'] = "";
	$this->ipsclass->Error(array('MSG'=>'Member ID in Use!'));
}
$check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'name','from'=>'members','where'=>"name=".$this->ipsclass->member['name']));
if($check['name'])
{
$this->ipsclass->DB2->close_db();
$this->ipsclass->DB->connect();
	$this->ipsclass->lang['asdf'] = "";
	$this->ipsclass->Error(array('MSG'=>'Member Name in Use!'));
}
$check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'members_display_name','from'=>'members','where'=>"members_display_name=".$this->ipsclass->member['members_display_name']));
if($check['members_display_name'])
{
$this->ipsclass->DB2->close_db();
$this->ipsclass->DB->connect();
	$this->ipsclass->lang['asdf'] = "";
	$this->ipsclass->Error(array('MSG'=>'Member Display Name in Use!'));
}
$check = $this->ipsclass->DB2->build_and_exec_query(array('select'=>'email','from'=>'members','where'=>"id=".$this->ipsclass->member['email']));
if($check['email'])
{
$this->ipsclass->DB2->close_db();
$this->ipsclass->DB->connect();
	$this->ipsclass->lang['asdf'] = "";
	$this->ipsclass->Error(array('MSG'=>'Email Address in Use!'));
}

	$ipsclass->DB2->force_data_type = array( 'name' => 'string' );
	$ipsclass->DB2->do_insert( 'members', $member );

	$ipsclass->DB2->close_db();

 

 

Сохраняем, закачиваем обратно на сервер.

 

 

Открываем файл ./sources/action_public/register.php, ищем:

 

$member['password'] = trim($this->ipsclass->input['PassWord']);

		$this->modules->on_create_account($member);

 

Меняем на:

 

$this->modules->on_create_account($member, $converge); $member['password'] = trim($this->ipsclass->input['PassWord']);

 

 

Сохраняем, закачиваем обратно на сервер.

 

 

Получаем информацию о пользователях из форума A и добавляем ее в базу данных форума B.

 

 

Открываем файл ./modules/ipb_member_sync.php, находим:

 

function on_group_change( $id, $new_group )
{
	global $ipsclass;
			 if ($new_group != 3) {
				   return;
			  }
	//---- START

 

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

 

$ipsclass->DB2 = new db_driver;

	$ipsclass->DB2->obj['sql_database']	 = $ipsclass->vars['sql_database2'];
	$ipsclass->DB2->obj['sql_user']		 = $ipsclass->vars['sql_user2'];
	$ipsclass->DB2->obj['sql_pass']		 = $ipsclass->vars['sql_pass2'];
	$ipsclass->DB2->obj['sql_host']		 = $ipsclass->vars['sql_host2'];
	$ipsclass->DB2->obj['sql_tbl_prefix']   = $ipsclass->vars['sql_tbl_prefix2'];
	$ipsclass->DB2->obj['use_shutdown']	 = USE_SHUTDOWN;
	$ipsclass->DB2->connect();

	$ipsclass->DB2->do_update( 'members', array( 'mgroup' => intval($new_group) ), 'id='.intval($id) );
	$uptime = time()+300;
	$ipsclass->DB2->do_update('task_manager', array('task_next_run' => $uptime), 'task_id=3');

	$ipsclass->DB2->close_db();

 

Сохраняем..

 

 

Это обновление групп форума B, когда пользователю на форуме A изменяют членскую группу.

 

 

 

Указанные изменения производят синхронизацию в "одну сторону". Если вы хотите сделать ее для обеих форумов то выполните указания выше и для форума B.

 

 

 

Указанным выше методом можно сделать синхронизацию и для трех и для четырех форумов по аналогии.

 

 

 

 

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

Опубликовано:
Указанные изменения производят синхронизацию в "одну сторону". Если вы хотите сделать ее для обеих форумов то выполните указания выше и для форума B.

А если и там и там есть одни и те же пользователи. Или имя пользователя разное, а емейл один?

Опубликовано:
  • Автор

при новой регистрации с уже использующимся адресом эл. почты и именем должно появиться сообщение об ошибке.

Опубликовано:

Это понятно. Но есть два форума. Форум А и Б. Которые надо синхронизовать между собой. На обоих форумах есть одни и те же пользователи. На другом форумах человек может зарегистрироваться под другим именем (есть и под тем же именем) но емейл оставить старый.

Как произойдет синхронизация таких пользователей? Если логин один и тот же, то один убьется? Если логин разный, то будет два пользователя с одним емейлом?

 

Ситуация реальная.

Опубликовано:
  • Автор

Если ID найден процесс синхронизации вернет ошибку:

"Member ID in Use"

Если ID не найден продолжение процесса синхронизации.

 

Также и с почтой и с ником и с отображаемым именем.

Гость
Эта тема закрыта для дальнейших сообщений.

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.