Синхронизация пользователей нескольких форумов.
Рекомендованные сообщения
Сейчас на странице 0
- Нет пользователей, просматривающих эту страницу.
A better way to browse. Learn more.
A full-screen app on your home screen with push notifications, badges and more.
Например есть два форума A и B..
Открываем conf_global.php форума A, находим:
Добавляем ниже:
Сохраняем, закачиваем обратно на сервер.
Открываем файл ./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, ищем:
Меняем на:
Сохраняем, закачиваем обратно на сервер.
Получаем информацию о пользователях из форума 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.
Указанным выше методом можно сделать синхронизацию и для трех и для четырех форумов по аналогии.
(С)
ipsbeyond