Skocz do zawartości
"Idzie nowe..." - o zmianach i nie tylko ×
Przeniesienie zakupów z IPS Marketplace / Moving bought items from IPS Marketplace ×

Sychronizacja dwóch forów opartych na IP.Board


Rekomendowane odpowiedzi

  • Manager

Artykuł ten pokaże jak w prosty sposób zsychronizować dwa fora oparte na IP.Board.

Info wstępne: istnieją dwa fora: forum A i forum B.

By zsynchronizować forum A z B postępuj wg poniższej instrukcji.

pliki forum A:

Otwórz plik conf_global.php

Znajdź:

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

Dodaj niżej:

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

Zapisz i wyślij.

Otwórz plik: modules/ipb_member_sync.php

znajdź:

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

Dodaj poniżej:

		$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'=>'User ID w użyciu!'));
}
$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'=>'Login usera w użyciu!'));
}
$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'=>'Nazwa wyświetlana usera w użyciu!'));
}
$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 Usera w użyciu!'));
}

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

	$ipsclass->DB2->close_db();

Zapisz i wyślij.

Otwórz plik: sources/action_public/register.php

Znajdź:

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

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

Zamień na:

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

Zapisz i wyślij.

Te zmiany mają na celu zapisywanie informacji o userach z forum A do bazy forum B.

Otwórz plik: modules/ipb_member_sync.php

Znajdź:

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

Dodaj poniżej:

		$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();

Zapisz i wyślij.

Te zmiany powodują, że przy zmianie grupy usera w forum A zmienia się w forum B.

Jeśli chcesz zsynchronizować forum B z A wykonaj te same czynności na jego plikach.

Enjoy!

intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę.