Synchronizes Yii users with phpBB3 forum
Requirements ¶
Yii 1.1 or above
Before usage ¶
Disable a profile activation in your forum.
Add redirects from a forum to the site in forum/ucp.php
:
case 'register':
header('location: /site/registration');
exit();
break;
case 'login':
header('location: /site/login');
exit();
break;
case 'logout':
header('location: /site/logout');
exit();
break;
Rename class user
to bbuser
in forum sources forum/includes/session.php
:
class user extends session
{
// ...
function user()
// ...
}
to
class bbuser extends session
{
// ...
function bbuser()
// ...
}
Replace in forum/common.php
// Instantiate some basic classes
$user = new user();
to
// Instantiate some basic classes
$user = new bbuser();
Remove input fields 'ICQ', 'AVATAR', etc. from forum templates ucp_profile_profile_info.html
and ucp_profile_avatar.html
.
Note: If you don't want to modify your forum core files, you can move login/logout/register redirects to .htaccess. But if your application contains class User, you must use namespaces or must rename your own class.
Usage sample ¶
Configure protected/config/main.php
return array(
'modules'=>array(
// ...
'phpbb',
}
'components'=>array(
// ...
'db'=>array(
'connectionString' => '...',
),
'forumDb'=>array(
'class'=>'CDbConnection',
'connectionString' => '...',
'tablePrefix' => 'phpbb_',
'charset' => 'utf8',
),
'phpBB'=>array(
'class'=>'phpbb.extensions.phpBB.phpBB',
'path'=>'webroot.forum',
),
// Synchronize Login/Logout. See PhpBBWebUser for inheritance details
'user'=>array(
'class'=>'phpbb.components.PhpBBWebUser',
'allowAutoLogin'=>true,
'loginUrl'=>array('/site/login'),
),
'image'=>array(
'class'=>'ext.image.CImageHandler',
),
'file'=>array(
'class'=>'ext.file.CFile',
),
),
);
Attach behavior and relation to your User model:
class User extends CActiveRecord
{
public function behaviors()
{
return array(
'PhpBBUserBehavior'=>array(
'class'=>'phpbb.components.PhpBBUserBehavior',
'usernameAttribute'=>'username',
'newPasswordAttribute'=>'new_password',
'emailAttribute'=>'email',
'avatarAttribute'=>'avatar',
'avatarPath'=>'webroot.upload.images.avatars',
'forumDbConnection'=>'forumDb',
'syncAttributes'=>array(
'site'=>'user_website',
'icq'=>'user_icq',
'from'=>'user_from',
'occ'=>'user_occ',
'interests'=>'user_interests',
)
),
);
}
public function relations()
{
Yii::import('phpbb.models.*');
return array(
'phpBbUser'=>array(self::HAS_ONE, 'PhpBBUser', array('username'=>'username')),
);
}
}
Access to forum userdata:
<?php $model = User::model()->findByPk(Yii::app()->user->id); ?>
Private messages: <a href="/forum/ucp.php?i=pm&folder=inbox">New <?php echo $model->phpBbUser->user_unread_privmsg; ?></a>
Access to forum friends:
foreach ($model->phpBbUser->friends as $friend)
{
echo $friend->user->name . ' ' . $friend->user->lastname . ' ' . $friend->age;
}
Changelog ¶
Version 1.1
* Fixed avatarPath handling
Resources ¶
- Code on GitHub
- README RUSclass
phpBB3 updates
Sounds great! But what is happening if a new phpBB version released? If I use the automatic updater won't it be a problem that I edited some phpBB core files?
Re: phpBB3 updates
You can move login/logout/register redirects to .htaccess. But if your application contains class
User
, you must use namespaces or rename your own class. Fixed readme.How is it supposed to work?
Hi!
Thanks for extension. I tried to use it but I do not actually get how it works exactly. I integrated components to my application, but all I get is that when I click login on forum page, I am redirected to my application login page. When I login as existing user and go back to forum, I am still not logged in forum and can not create new post etc. Where exactly does your code deals with this? Thanks
Re: How is it supposed to work?
Hi! Did you turn off a forum captcha or an another antispam system? Does same user exist in a forum database table?
Re: Re: How is it supposed to work?
Hi,
thanks for quick reply. Yes I did turn captcha etc off. The same user does not exist in forum database, do I have to create it first? If so, what attributes do I have to migrate? Do I have to use the same password hashing as phpbb forum? Cheers
Re: Re: Re: How is it supposed to work?
Yes, the extension just creates same entry (with same username and same password) in a forum database on the User onAfterSave event (if isNewRecord is true). You must register all existing site users in a forum manually or recreate synchronized entries with help of the phpBB component of your application:
Yii::app()->phpBB->userAdd($username, $password, $email, 2);
Hello
Hello.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.