Source for file role_register.php
Documentation is available at role_register.php
* register new user - role model
* @copyright (c) 2004-15 bitweaver.org
if( isset ( $_REQUEST['tk'] ) ) {
unset ( $_REQUEST['tk'] );
require_once( '../kernel/setup_inc.php' );
require_once( KERNEL_PKG_PATH. 'BitBase.php' );
include_once( KERNEL_PKG_PATH. 'notification_lib.php' );
require_once( USERS_PKG_PATH. 'classes/recaptchalib.php' );
$gBitSystem->verifyFeature( 'users_allow_register' );
// Everything below here is needed for registration
require_once( USERS_PKG_PATH. 'BaseAuth.php' );
if( !empty( $_REQUEST['returnto'] ) ) {
$_SESSION['returnto'] = $_REQUEST['returnto'];
} elseif( !empty( $_SERVER['HTTP_REFERER'] ) && !strpos( $_SERVER['HTTP_REFERER'], 'login.php' ) && !strpos( $_SERVER['HTTP_REFERER'], 'role_register.php' ) ) {
$from = parse_url( $_SERVER['HTTP_REFERER'] );
if( !empty( $from['path'] ) && $from['host'] == $_SERVER['SERVER_NAME'] ) {
$_SESSION['loginfrom'] = $from['path']. '?'. ( !empty( $from['query'] ) ? $from['query'] : '' );
if( $gBitUser->isRegistered() ) {
if( isset ( $_REQUEST["register"] ) ) {
$userClass = $gBitSystem->getConfig( 'user_class', 'BitPermUser' );
$newUser = new $userClass();
if( $newUser->preRegisterVerify( $reg ) && $newUser->register( $reg ) ) {
$gBitUser->mUserId = $newUser->mUserId;
// add user to user-selected role
if ( !empty( $_REQUEST['role'] ) ) {
$roleInfo = $gBitUser->getRoleInfo( $_REQUEST['role'] );
if ( empty($roleInfo) || $roleInfo['is_public'] != 'y' ) {
$errors[] = "You can't use this role";
$gBitSmarty->assign_by_ref( 'errors', $errors );
$userId = $newUser->getUserId();
$gBitUser->addUserToRole( $userId, $_REQUEST['role'] );
$gBitUser->storeUserDefaultRole( $userId, $_REQUEST['role'] );
// set the user to private if necessary. defaults to public
if(!empty($_REQUEST['users_information']) && $_REQUEST['users_information'] == 'private'){
$newUser->storePreference('users_information','private');
// requires validation by email
$gBitSmarty->assign('msg',tra('You will receive an email with information to login for the first time into this site'));
$gBitSmarty->assign('showmsg','y');
if( !empty( $_SESSION['loginfrom'] ) ) {
unset ( $_SESSION['loginfrom'] );
// registration login, fake the cookie so the session gets updated properly.
if( empty($_COOKIE[$gBitUser->getSiteCookieName()] ) ) {
$_COOKIE[$gBitUser->getSiteCookieName()] = session_id();
// login with email since login is not technically required in the form, as it can be auto generated during store
$afterRegDefault = $newUser->login( $reg['email'], $reg['password'], FALSE, FALSE );
// return to referring page
if( !empty( $_SESSION['returnto'] ) ) {
$url = $_SESSION['returnto'];
// forward to role post-registration page
} elseif ( !empty( $_REQUEST['role'] ) && !empty( $roleInfo['after_registration_page'] ) ) {
if ( $newUser->verifyId( $roleInfo['after_registration_page'] ) ) {
$url = BIT_ROOT_URI. "index.php?content_id=". $roleInfo['after_registration_page'];
} elseif( strpos( $roleInfo['after_registration_page'], '/' ) === FALSE ) {
$url = $roleInfo['after_registration_page'];
$gBitSmarty->assign_by_ref( 'errors', $newUser->mErrors );
$gBitSmarty->assign_by_ref( 'reg', $reg );
$gBitSmarty->assign('customFields', $fields);
if( $instance && $instance->canManageAuth() ) {
$auth_reg_fields = $instance->getRegistrationFields();
foreach( array_keys( $auth_reg_fields ) as $auth_field ) {
$auth_reg_fields[$auth_field]['value'] = $auth_reg_fields[$auth_field]['default'];
$gBitSmarty->assign( 'auth_reg_fields', $auth_reg_fields );
$languages = $gBitLanguage->listLanguages();
$gBitSmarty->assign_by_ref( 'languages', $languages );
$gBitSmarty->assign_by_ref( 'gBitLanguage', $gBitLanguage );
if( strstr( $file, ".gif" )) {
$gBitSmarty->assign('flags', $flags);
'sort_mode' => array( 'is_default_asc', 'role_desc_asc' ),
$roleList = $gBitUser->getAllRoles( $listHash );
$gBitSmarty->assign_by_ref( 'roleList', $roleList );
// include preferences settings from other packages - these will be included as individual tabs
foreach( $gBitSystem->mPackages as $package ) {
if( $gBitSystem->isPackageActive( $package['name'] )) {
$php_file = $package['path']. 'user_register_inc.php';
$tpl_file = $package['path']. 'templates/user_register_inc.tpl';
$p['template'] = $tpl_file;
$gBitSmarty->assign_by_ref('packages',$packages );
if( !empty( $_REQUEST['error'] ) ) {
$gBitSmarty->assign( 'error', $_REQUEST['error'] );
$gBitSmarty->assign( 'metaKeywords', 'Login, Sign in, Registration, Register, Create new account' );
$gBitSystem->display('bitpackage:users/role_register.tpl', 'Register' , array( 'display_mode' => 'display' ));
|