
Zaawansowany

Postów: 1656 Pomógł: 42
Data rejestracji: 28.04.2005 20:28
|
Cze??
Powsta?o ju? par? lepszych, gorszych prób integracji fusiona z innymi cmsami. Postanowi?em w inny sposób to wszystko uporz?dkowa? (lepszy mo?e gorszy - zobaczymy). Jako, ?e najlepiej znam fusiona zabra?em si? za niego. Stworzy?em klas? do obs?ugi u?ytkowników. Za pomoca metod login, logout, user_register, user_del i user_update mo?na z u?ytkownikiem w?a?ciwie zrobi? wszystko co jest potrzebne do zintegrowania strony z innym cmsem. Pó?niej poka?e na przyk?adzie jak zrobi? aby loguj?c si? w phpbb2 automatycznie user by? logowany/wylogowywany w fusionku a tak?e automatyczn? rejestracj?. Aktualizacji profilu nie zrobi?em dzisiaj - brak?o czasu.
Opis metod (przeznaczenie, parametry i warto?ci zwracane) opisa?em w komentarzach w pliku z klas?. Ma?a uwaga, klasa wymaga php5.
http://dev.grzes....ms.tar.bz2
Jak najpro?ciej to wykorzysta??
<?
ob_start();
require_once "multicms/phpfusion_mcms.php";
echo '<html><head><title> PHP-Fusion :) </title></head>
<body style="font-size:10px; fotn-family:verdana;">
<form name="loginfrm" method="post" action="phpfusion.php">
<input type="submit" name="login" value="loguj"> <input type="submit" name="logout" value="wyloguj">
<input type="submit" name="register" value="rejestruj usera: test2">
<input type="submit" name="userdel" value="usun usera: test2">
<input type="submit" name="updateuser" value="zmien usera: test2">
</form>
';
if (isset($_POST['login'])) {
$pf = new PHPFusion('phpfusion/');
$error = $pf -> login("test2", "haselko", 0);
if ($error==0) echo "Logowanie zako?czone sukcesem :)"; else echo "Wyst?pi? b??d: $error";
}elseif (isset($_POST['logout'])) {
$pf = new PHPFusion('phpfusion/');
$error = $pf -> logout();
if ($error==0) echo "Uzytkownik wylogowany :)"; else echo "Wyst?pi? b??d: $error";
}elseif (isset($_POST['register'])) {
$pf = new PHPFusion('phpfusion/');
$error = $pf->user_register('test2', 'haselko', '', array(
'user_hide_email' => 1,
'user_location' => 'bytom',
'user_month' => '5',
'user_day' => '23',
'user_year' => '1984',
'user_aim' => '',
'user_icq' => '',
'user_msn' => '',
'user_yahoo' => '',
'user_web' => 'http://mcms.grzes.info',
'user_theme' => 'default',
'user_offset' => '0',
'user_sig' => 'jaki? tam podpis usera :P'
));
if ($error==0) echo "Uzytkownik zarejestrowany :)"; else echo "Wyst?pi? b??d: $error";
}elseif (isset($_POST['userdel'])) {
$pf = new PHPFusion('phpfusion/');
$error = $pf -> user_del('test2');
if ($error==0) echo "Uzytkownik usuni?ty :)"; else echo "Wyst?pi? b??d: $error";
}elseif (isset($_POST['updateuser'])) {
$pf = new PHPFusion('phpfusion/');
$error = $pf -> user_update('test2', array(
'user_name' => 'test_new2',
'user_email' => '',
'user_newpassword' => 'nowehaselko',
'user_hide_email' => 0,
'user_location' => 'miasteczko',
'user_month' => 4,
'user_day' => 22,
'user_year' => 1800,
'user_aim' => 'aim',
'user_icq' => 'icq',
'user_msn' => 'msn',
'user_yahoo' => 'yahoo',
'user_web' => 'http://buu :P',
'user_theme' => 'default',
'user_offset' => 3,
'user_sig' => 'nowa sygnaturka',
'user_status' => 0
));
if ($error==0) echo "Uzytkownik usuni?ty :)"; else echo "Wyst?pi? b??d: $error";
}
echo '</body></html>';
ob_end_flush();
?>
Powy?szy plik phpfusion.php znajduje si? w katalogu g?ównym a fusion w podkatalogu phpfusion. Nie jest to ambitny przyk?ad ( ;) ) ale powinien w przyst?pny sposób pokaza? sposób wykorzystania klasy.
Pora na phpBB.
plik login.php
Mi?dzy linijkami 86 a 87 wstawiamy:
include "../multicms/phpfusion_mcms.php";
$pf = new PHPFusion('../phpfusion/');
$pf->login($username, $password, $autologin);
Po linii 141 wstawiamy to:
include "../multicms/phpfusion_mcms.php";
$pf = new PHPFusion('../phpfusion/');
$pf->logout();
Dostosujcie tylko ?cie?ki do pliku z klas? i katalogu z plikiem config.php fusiona. Logowanie i wylogowywanie mamy z g?owy.
Teraz rejestracja. Plik includes/usercp_register.php
znajd?cie fragment:
//
// Get current date
//
$sql = "INSERT INTO " . USERS_TABLE . " (user_id, username, user_regdate, user_password, user_email, user_icq, user_website, user_occ, user_from, user_interests, user_sig, user_sig_bbcode_uid, user_avatar, user_avatar_type, user_viewemail, user_aim, user_yim, user_msnm, user_attachsig, user_allowsmile, user_allowhtml, user_allowbbcode, user_allow_viewonline, user_notify, user_notify_pm, user_popup_pm, user_timezone, user_dateformat, user_lang, user_style, user_level, user_allow_pm, user_active, user_actkey)
VALUES ($user_id, '" . str_replace("\'", "''", $username) . "', " . time() . ", '" . str_replace("\'", "''", $new_password) . "', '" . str_replace("\'", "''", $email) . "', '" . str_replace("\'", "''", $icq) . "', '" . str_replace("\'", "''", $website) . "', '" . str_replace("\'", "''", $occupation) . "', '" . str_replace("\'", "''", $location) . "', '" . str_replace("\'", "''", $interests) . "', '" . str_replace("\'", "''", $signature) . "', '$signature_bbcode_uid', $avatar_sql, $viewemail, '" . str_replace("\'", "''", str_replace(' ', '+', $aim)) . "', '" . str_replace("\'", "''", $yim) . "', '" . str_replace("\'", "''", $msn) . "', $attachsig, $allowsmilies, $allowhtml, $allowbbcode, $allowviewonline, $notifyreply, $notifypm, $popup_pm, $user_timezone, '" . str_replace("\'", "''", $user_dateformat) . "', '" . str_replace("\'", "''", $user_lang) . "', $user_style, 0, 1, ";
if ( $board_config['require_activation'] == USER_ACTIVATION_SELF || $board_config['require_activation'] == USER_ACTIVATION_ADMIN || $coppa )
{
$user_actkey = gen_rand_string(true);
$key_len = 54 - (strlen($server_url));
$key_len = ( $key_len > 6 ) ? $key_len : 6;
$user_actkey = substr($user_actkey, 0, $key_len);
$sql .= "0, '" . str_replace("\'", "''", $user_actkey) . "')";
}
else
{
$sql .= "1, '')";
}
if ( !($result = $db->sql_query($sql, BEGIN_TRANSACTION)) )
{
message_die(GENERAL_ERROR, 'Could not insert data into users table', '', __LINE__, __FILE__, $sql);
}
po nim trzeba doda?:
include '../multicms/phpfusion_mcms.php';
$pf = new PHPFusion('../phpfusion/');
$error = $pf->user_register($username, $new_password, $email, array(
'user_hide_email' => ($viewemail ? 0 : 1),
'user_location' => $location,
'user_aim' => $aim,
'user_icq' => $icq,
'user_msn' => $msn,
'user_yahoo' => $yim,
'user_web' => $website,
'user_theme' => 'default',
'user_offset' => $user_timezone,
'user_sig' => $signature
), TRUE);
Teraz podczas rejestracji na forum user zostanie zarejestrowany automatycznie w fusionku.
Drobna uwaga, to tylko najprostsze przyk?ady jakie istniej?. Metoda user_register zwraca odpowiednie b??dy je?li rejestrowany user ju? istnieje w fusionku ale skrypt phpBB nie bierze tego pod uwag? i na forum zarejestruje typa.
Po dopracowaniu klasy PHPFusion przyjdzie pora na inne cmsy. Dlaczego ju? teraz pisz? o tym? Co my?licie o takim podej?ciu do tego? Wszystkie klasy korzysta?yby z metod o takich samych nazwach a w miar? mo?liwo?ci o takich samych parametrach i zwracanych warto?ciach. Znacz?co powinno to u?atwi? tworzenie integracji mi?dzy ró?nymi cmsami.
uwagi krytyczne wr?cz zalecane ;)
Edytowane przez Grzes dnia 23.04.2007 16:28:36
Cz?sto najm?drzejsz? odpowiedzi? jest milczenie 
|