Jumat, Januari 23, 2009

Langkah-langkah integrasi phpBB3 ke dalam sistem lain

Pada tulisan ini saya akan berbagi pengalaman mengintegrasikan phpBB3 ke sistem lain. Bagian yang diintegrasikan adalah data user, sehingga perlu dilakukan penanganan login, logout, add user, edit user, edit password, dan delete user. Versi phpBB3 yang saya gunakan adalah versi 3.0.4, dan saya menggunakan bantuan class phpbb_integrator yang bisa didownload http://www.phpclasses.org/browse/package/4826.html
Pada tulisan ini, hanya ada dua group pengguna pada sistem existing, yaitu admin dan user, sehingga dapat dilakukan mapping dengan mudah ke group Registered dan Administrators yang telah ada secara default di phpBB3.

Instalasi

Instalasi phpBB3 dilakukan menggunakan installer default phpBB3. Download dan extract phpBB3 dari sumber resminya di http://www.phpbb.com/downloads/
Sebaiknya letakkan phpBB3 di direktori tersendiri, agar file-file php-nya tidak tercampur dengan file-file php dari sistem existing yang akan diintegrasikan. Saya menggunakan direktori /forum, sehingga akses ke forum dilakukan ke alamat http://<url-sistem>/forum

Setting phpbb_integrator

Extract phpbb_integrator ke salah satu direktori sistem yang ada. File yang dibutuhkan adalah phpbb.class.php
File ini akan di-include sewaktu diperlukan untuk melakukan integrasi sistem dengan phpBB3.

Untuk setiap pemanggilan fungsi integrasi berikut ini, inisialisasi objek dari class phpbb dengan kode:

$phpbb = new phpbb(FORUM_DIR, "php");


FORUM_DIR adalah konstanta yang berisi path lengkap di file sistem mengarah ke direktori tempat forum berada, contohnya:

define (FORUM_DIR, '/var/www/cms/forum');

Sesuaikan dengan kondisi sistem yang ada.

Penggunaan $db

phpbb_integrator menggunakan variabel $db milik phpBB3 untuk melakukan query ke database. Jika sistem existing juga menggunakan variabel yang sama, baik untuk keperluan akses database, maupun untuk keperluan lain, perlu dilakukan antisipasi mencegan variabel sistem ditimpa oleh variabel phpBB3.
Gunakan kode berikut ini:

//simpan variabel asli $db
$db_orig = $db;
//kode integrasi disini
//...
//kembalikan variabel $db
$db = $db_orig;


Kode-kode integrasi menggunakan phpbb_integrator

Login

$phpbb_vars = array("username" => $username, "password" => $password);
$phpbb_result = $phpbb->user_login($phpbb_vars);


Logout

$phpbb_result = $phpbb->user_logout();


Add user

//untuk administrators
$group_id = 2;
//untuk registered user
$group_id = 5;
$phpbb_vars = array("username" => $username, "password" => $password, "user_email" => $email, "group_id" => $group_id);
$phpbb_result = $phpbb->user_add($phpbb_vars);


Edit password

$phpbb_vars = array("username" => $username, "password" => $password);
$phpbb_result = $phpbb->user_change_password($phpbb_vars);


Edit user

$phpbb_vars = array("username" => $username, "user_email" => $email);
$phpbb_result = $phpbb->user_update($phpbb_vars);


Delete user

$phpbb_vars = array("username" => $username);
$phpbb_result = $phpbb->user_delete($phpbb_vars);


Setelah integrasi di sisi sistem existing, sekarang akan dilakukan penutupan registrasi dan login di sisi phpBB3. Hal ini karena user yang register di phpBB3 tidak akan masuk ke sistem, sehingga akan dilakukan pemaksaan register user baru di sistem existing melalui integrasi di atas. Data user memang akan tersimpan di dua tabel, karena itu cukup disimpan data minimum di sisi phpBB3, yaitu hanya username, password, group dan email.

Menghilangkan register new user dari phpBB3
Di halaman Administration Control Panel, tab GENERAL, klik menu 'User registration settings'.
Set 'Account activation' menjadi Disabled

Menghilangkan notifikasi email dari phpBB3
Pengiriman pesan lewat email seharusnya dihandle oleh sistem, sehingga fungsi kirim email di phpBB3 tidak diperlukan.
Di halaman Administration Control Panel, tab GENERAL, klik menu 'E-mail settings'.
Set 'Enable board-wide e-mails' dan 'Users send e-mail via board' menjadi Disabled

Menghilangkan edit profil dari phpBB3
Di halaman Administration Control Panel, tab SYSTEM, klik menu 'User Control Panel'.
Klik 'Profile'
Pindahkan 'Edit avatar' dan 'Edit signature' ke atas, sehingga menjadi urutan pertama dan kedua.
Set 'Edit account settings' dan 'Edit profile' menjadi disable dengan mengklik tulisan 'Disable'.
Option yang telah di-disable ditandai dengan icon gembok dan tulisan di kanan menjadi 'Enable'

Menghilangkan form login dari phpBB3
Halaman login akan dihilangkan dengan mengedit template. Sebelum melakukan pengeditan, lakukan setting berikut ini terlebih dahulu, agar kode php di template bisa dijalankan oleh phpBB3:
Di halaman Administration Control Panel, tab GENERAL, klik menu 'Security settings'.
Set 'Allow php in templates' menjadi 'Yes'

Edit template:
Di halaman Administration Control Panel, tab STYLES, klik menu 'Templates'.
Klik link edit di template yang sedang digunakan.
Edit 3 file berikut ini:

index_body.html
cari baris ini (di sekitar pertengahan file)

<!-- IF not S_USER_LOGGED_IN and not S_IS_BOT -->

Ubah menjadi

<!-- IF not S_USER_LOGGED_IN and S_USER_LOGGED_IN and not S_IS_BOT -->

untuk menghilangkan tampilan login form di halaman forum.

login_body.html
Tambahkan baris berikut di bagian atas file, sehingga template menjadi:

<!-- IF not S_ADMIN_AUTH -->
<!-- PHP -->
header( 'Location: /' ) ;
<!-- ENDPHP -->
<!-- ENDIF -->
<!-- INCLUDE overall_header.html -->
...


Kode ini akan me-redirect halaman login ke halaman system. Jika sistem berada di sub direktori, atau memiliki halaman login, sesuaikan parameter 'Location' untuk mengarah ke halaman sistem yang diinginkan.

overall_header.php
Cari baris:

<li class="icon-logout"><a href="{U_LOGIN_LOGOUT}" title="{L_LOGIN_LOGOUT}" accesskey="l">{L_LOGIN_LOGOUT}</a></li>

Ubah menjadi:

<li class="icon-logout">{L_LOGIN_LOGOUT}</li>

Saya mempertahankan label L_LOGIN_LOGOUT agar user tahu bahwa dia sedang login di forum. Untuk keperluan ini saya mengedit file berikut ini:

/forum/language/en/common.php
Cari baris:

'LOGIN' => 'Login',

Ubah menjadi:

'LOGIN' => '&nbsp;',
'LOGIN_BTN' => 'Login',


Cari baris:

'LOGOUT_USER' => 'Logout [ %s ]',

Ubah menjadi:

'LOGOUT_USER' => '[ %s ]',


Selanjutnya edit kembali template login_body.html:
Cari baris:

<dd>{S_HIDDEN_FIELDS}<input name="login" tabindex="6" value="{L_LOGIN}" class="button1" type="submit"></dd>

Ubah menjadi:

<dd>{S_HIDDEN_FIELDS}<input name="login" tabindex="6" value="{L_LOGIN_BTN}" class="button1" type="submit"></dd>


Sekarang login di phpBB3 sudah tidak bisa dilakukan, harus melalui login di sistem yang telah dipasang phpbb_integrator.

Semoga tulisan singkat ini bisa membantu.

0 komentar: