function phpbb_synchronize_user( $UserID, $Email, $Password, $IsActive )
{
global $cn1;
$message = array( );
$librium_default_group_id = 2;
static $phpbb_config;
static $group_config;
if ( is_array( $phpbb_config ) == false )
{
$phpbb_config = array( );
$query = "SELECT config_name, config_value FROM phpbb_config";
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
while ( $myrow = mysql_fetch_assoc( $ident ) )
{
$phpbb_config[ $myrow[ "config_name" ] ] = $myrow[ "config_value" ];
}
}
if ( is_array( $group_config ) == false )
{
$query = sprintf( "SELECT group_id, group_colour, group_rank, group_avatar, group_avatar_type, group_avatar_width, group_avatar_height FROM phpbb_groups WHERE group_id = %d", $librium_default_group_id );
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
$group_config = mysql_fetch_assoc( $ident );
}
$bbuser_newid = $UserID + 1000;
$bbuser_email = strtolower( $Email );
$bbuser_passw = $Password;
$bbuser_class = $IsActive ? 0 : 1;
$bbuser_login = $bbuser_email;
$bbuser_login = explode( "@", $bbuser_login );
$bbuser_login = $bbuser_login[ 0 ];
$bbuser_login = preg_replace( "/[^a-z0-9]/i", "", $bbuser_login );
$bbuser_login = $bbuser_login . $bbuser_newid;
$query = sprintf( "SELECT username, username_clean, user_type FROM phpbb_users WHERE user_id = %d", $bbuser_newid );
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
$myrow = mysql_fetch_assoc( $ident );
if ( $myrow === false )
{
$dataarray = array( );
$dataarray[ "user_id" ] = $bbuser_newid;
$dataarray[ "user_email" ] = $bbuser_email;
$dataarray[ "user_email_hash" ] = crc32( $bbuser_email ) . strlen( $bbuser_email );
$dataarray[ "user_password" ] = md5( $bbuser_passw );
$dataarray[ "username" ] = $bbuser_login;
$dataarray[ "username_clean" ] = $bbuser_login;
$dataarray[ "group_id" ] = $librium_default_group_id;
$dataarray[ "user_type" ] = $bbuser_class;
$dataarray[ "user_colour" ] = $group_config[ "group_colour" ];
$dataarray[ "user_rank" ] = $group_config[ "group_rank" ];
$dataarray[ "user_avatar" ] = $group_config[ "group_avatar" ];
$dataarray[ "user_avatar_type" ] = $group_config[ "group_avatar_type" ];
$dataarray[ "user_avatar_width" ] = $group_config[ "group_avatar_width" ];
$dataarray[ "user_avatar_height" ] = $group_config[ "group_avatar_height" ];
$dataarray[ "user_lang" ] = $phpbb_config[ "default_lang" ];
$dataarray[ "user_timezone" ] = $phpbb_config[ "board_timezone" ];
$dataarray[ "user_dst" ] = $phpbb_config[ "board_dst" ];
$dataarray[ "user_dateformat" ] = $phpbb_config[ "default_dateformat" ];
$dataarray[ "user_style" ] = $phpbb_config[ "default_style" ];
$dataarray[ "user_actkey" ] = "";
$dataarray[ "user_allow_massemail" ] = 1;
$dataarray[ "user_allow_pm" ] = 1;
$dataarray[ "user_allow_viewemail" ] = 1;
$dataarray[ "user_allow_viewonline" ] = 1;
$dataarray[ "user_emailtime" ] = 0;
$dataarray[ "user_full_folder" ] = -3;
$dataarray[ "user_inactive_reason" ] = $bbuser_class ? 3 : 0;
$dataarray[ "user_inactive_time" ] = $bbuser_class ? time( ) : 0;
$dataarray[ "user_interests" ] = "";
$dataarray[ "user_ip" ] = "";
$dataarray[ "user_last_privmsg" ] = 0;
$dataarray[ "user_lastmark" ] = time( );
$dataarray[ "user_lastpage" ] = "";
$dataarray[ "user_lastpost_time" ] = 0;
$dataarray[ "user_lastvisit" ] = 0;
$dataarray[ "user_message_rules" ] = 0;
$dataarray[ "user_new_privmsg" ] = 0;
$dataarray[ "user_notify" ] = 0;
$dataarray[ "user_notify_pm" ] = 1;
$dataarray[ "user_notify_type" ] = 0;
$dataarray[ "user_occ" ] = "";
$dataarray[ "user_options" ] = 895;
$dataarray[ "user_pass_convert" ] = 0;
$dataarray[ "user_permissions" ] = "";
$dataarray[ "user_posts" ] = 0;
$dataarray[ "user_sig" ] = "";
$dataarray[ "user_sig_bbcode_bitfield" ] = "";
$dataarray[ "user_sig_bbcode_uid" ] = "";
$dataarray[ "user_unread_privmsg" ] = 0;
$dataarray[ "user_regdate" ] = time( );
$dataarray[ "user_passchg" ] = time( );
$dataarray[ "user_form_salt" ] = substr( md5( microtime( ) ), 4, 16 );
$query = "";
foreach ( $dataarray as $column => $value )
{
if ( $query == "" )
{
$query .= "INSERT phpbb_users SET ";
}
else
{
$query .= ", ";
}
$query .= sprintf( "%s = '%s'", $column, addslashes( $value ) );
}
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
$message[ ] = sprintf( "Created user <b>%s</b>", rtext( $bbuser_login ) );
$query = sprintf( "
INSERT INTO phpbb_user_group
( group_id, user_id, group_leader, user_pending )
VALUES
( %d, %d, 0, 0 )
", $librium_default_group_id, $bbuser_newid
);
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
$message[ ] = "› Assigned user to registered users group";
}
else
{
$dataarray = array( );
$dataarray[ "user_email" ] = $bbuser_email;
$dataarray[ "user_email_hash" ] = crc32( $bbuser_email ) . strlen( $bbuser_email );
$dataarray[ "user_password" ] = md5( $bbuser_passw );
if ( $myrow[ "username" ] == "" || $myrow[ "username_clean" ] == "" )
{
$dataarray[ "username" ] = $bbuser_login;
$dataarray[ "username_clean" ] = $bbuser_login;
}
if ( $myrow[ "user_type" ] != $bbuser_class )
{
$dataarray[ "user_type" ] = $bbuser_class;
$dataarray[ "user_inactive_reason" ] = $bbuser_class ? 3 : 0;
$dataarray[ "user_inactive_time" ] = $bbuser_class ? time( ) : 0;
}
$query = "";
foreach ( $dataarray as $column => $value )
{
if ( $query == "" )
{
$query .= "UPDATE phpbb_users SET ";
}
else
{
$query .= ", ";
}
$query .= sprintf( "%s = '%s'", $column, addslashes( $value ) );
}
$query .= sprintf( " WHERE user_id = %d", $bbuser_newid );
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
if ( mysql_affected_rows( $cn1 ) )
{
$message[ ] = sprintf( "Updated user <b>%s</b>", rtext( $bbuser_login ) );
}
}
return implode( "<br>\n", $message );
}
$message = array( );
$query = "SELECT UserID, Email, Password, IsActive FROM user";
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
while ( $myrow = mysql_fetch_assoc( $ident ) )
{
$result = phpbb_synchronize_user( $myrow[ "UserID" ], $myrow[ "Email" ], $myrow[ "Password" ], $myrow[ "IsActive" ] );
if ( $result )
{
$message[ ] = $result;
}
}
mysql_query( "INSERT INTO user YADA YADA", $cn1 ) or die( mysql_error( $cn1 ) );
$result = phpbb_synchronize_user( mysql_insert_id( $cn1 ), $_POST[ "Email" ], $_POST[ "Password" ], 1 );
mysql_query( "UPDATE user YADA YADA WHERE UserID = {$_SESSION["UserID"]}", $cn1 ) or die( mysql_error( $cn1 ) );
$result = phpbb_synchronize_user( $_SESSION[ "UserID" ], $_POST[ "Email" ], $_POST[ "Password" ], 1 );
session_start( );
force_user_to_login_to_my_website_first( );
#
# synchronize user - optional
#
phpbb_synchronize_user(
$_SESSION[ "UserID" ],
$_SESSION[ "Email" ],
$_SESSION[ "Password" ],
$_SESSION[ "IsActive" ]
);
#
# since we are not storing phpbb username in the website user table
# we need to look it up
#
$query = sprintf(
"SELECT username FROM phpbb_users WHERE user_id = %d + 1000",
$_SESSION[ "UserID" ]
);
$ident = mysql_query( $query, $cn1 ) or die( mysql_error( $cn1 ) );
$myrow = mysql_fetch_assoc( $ident );
if ( $myrow === false )
{
die( "PHPBB USER NOT FOUND" );
}
#
# phpbb init
#
define( "IN_PHPBB", true );
$phpbb_root_path = "./bb/";
$phpEx = substr( strrchr( __FILE__, "." ), 1 );
require( $phpbb_root_path . "common." . $phpEx );
require( $phpbb_root_path . "includes/functions_user." . $phpEx );
require( $phpbb_root_path . "includes/functions_module." . $phpEx );
$user->session_begin();
#
# hack that i used from phpbb code
#
$result = $auth->login( $myrow[ "username" ], $_SESSION[ "Password" ] );
if ( $result[ "status" ] == LOGIN_SUCCESS )
{
if ( defined( "IN_CHECK_BAN" ) && $result[ "user_row" ][ "user_type" ] != USER_FOUNDER )
{
return;
}
$successurl = $_GET[ "successurl" ];
if ( $successurl == "" )
{
$successurl = "/bb/";
}
$successurl = reapply_sid( $successurl );
$successurl = str_replace( "&", "&", $successurl );
header( "Location: $successurl" );
exit( 0 );
}
else
{
die( $result[ "error_msg" ] );
}
Eelke wrote:I'm surprised there is no function to add users to phpBB and you had to do the "hard work" yourself.
Have you considered what happens is someone would go directly to a forum URL and is presented with a login box?
taking the standard authentication module and adapting it so that it will log people onto phpBB as well as onto your own site is peanuts
Return to [3.0.x] MOD Writers Discussion
Users browsing this forum: DavesComputerTips and 14 guests