function xpress_login(){ global $current_user; global $xoopsModule,$xoopsUser,$xoopsUserIsAdmin; if(is_object($xoopsUser)){ $u_name = $xoopsUser->getVar("uname"); $u_pass_md5 = $xoopsUser->getVar("pass"); if ( ! empty($u_name) && ! empty($u_pass_md5) ) { include_once dirname( __FILE__ ).'/user_sync_xoops.php'; repair_user_meta_prefix(); //Repair when data base prefix is changed on XOOPS side $messege = ''; $ret = user_sync_to_wordpress($xoopsUser->getVar("uid"),$messege); if ($ret){ $user = new WP_User(0, $u_name); if ( wp_login($u_name, $u_pass_md5) ) { wp_setcookie($u_name, $u_pass_md5, true, '', '', false); do_action('wp_login', $u_name); wp_set_current_user($user->ID); return true; } } } } if ( ! empty($current_user) ){ wp_set_current_user(0); wp_logout(); wp_clear_auth_cookie(); } return false; }
function user_sync_to_wordpress($sync_uid = 0, &$message) { global $xoops_db; $db_xoops_users = get_xoops_prefix() . 'users'; $db_xpress_users = get_wp_prefix() . 'users'; $message = 'Do Sync'; if ($sync_uid == 0) { $xu_sql = "SELECT uid ,name ,uname ,pass ,email, url, user_regdate, user_aim, user_yim FROM {$db_xoops_users}"; } else { $xu_sql = "SELECT uid ,name ,uname ,pass ,email, url, user_regdate, user_aim, user_yim FROM {$db_xoops_users} WHERE uid = {$sync_uid}"; } $xoops_users = $xoops_db->get_results($xu_sql); if (empty($xoops_users)) { $message .= '...ERR (' . $xu_sql . ')'; return false; } foreach ($xoops_users as $xoops_user) { $wp_user_id = get_wp_user_id($xoops_user->uname); $roles = get_xoops_group_role($xoops_user->uid); $has_role = has_group_role($xoops_user->uid); if (!$has_role) { if ($sync_uid != 0) { if ($wp_user_id) { if ($allway_update) { $message .= '...NOT XPRESS USER ' . $xoops_user->uname; return false; } } else { $message .= '...NOT XPRESS USER ' . $xoops_user->uname; return false; } } else { $message .= "...PASS '" . $xoops_user->uname . "'[uid=" . $xoops_user->uid . "](not xpress user)"; continue; } } $user_regist_time = date('Y-m-d H:i:s', $xoops_user->user_regdate); $user_status = 0; $user_display_name = empty($xoops_user->name) ? $xoops_user->uname : $xoops_user->name; $is_update = false; if ($wp_user_id) { $new_user = false; $wu_sql = "UPDATE {$db_xpress_users} "; $wu_sql .= 'SET '; $wu_sql .= "user_pass = '******', "; $wu_sql .= "user_email = '{$xoops_user->email}', "; $wu_sql .= "user_url = '{$xoops_user->url}', "; $wu_sql .= "user_nicename = '{$xoops_user->uname}', "; $wu_sql .= "user_registered = '{$user_regist_time}', "; $wu_sql .= "user_status = 0 "; $wu_sql .= "WHERE (user_login = '******' )"; $xoops_db->query($wu_sql); $message .= set_user_role($wp_user_id, $roles, $new_user); if (!check_user_meta_prefix($wp_user_id)) { repair_user_meta_prefix(); } $is_update = true; } else { $new_user = true; if (is_used_wp_user_id($xoops_user->uid)) { // WP User ID has already been used. $wu_sql = "INSERT INTO {$db_xpress_users} "; $wu_sql .= "(user_login , user_pass ,user_email , user_url , user_nicename "; $wu_sql .= " , user_registered , user_status , display_name) "; $wu_sql .= "VALUES "; $wu_sql .= "('{$xoops_user->uname}', '{$xoops_user->pass}', '{$xoops_user->email}', '{$xoops_user->url}', '{$xoops_user->uname}' "; $wu_sql .= " , '{$user_regist_time}', {$user_status}, '{$user_display_name}')"; $xoops_db->query($wu_sql); $wp_user_id = mysql_insert_id(); } else { // WP User ID has not been used yet. $wu_sql = "INSERT INTO {$db_xpress_users} "; $wu_sql .= "(ID , user_login , user_pass ,user_email , user_url , user_nicename "; $wu_sql .= " , user_registered , user_status , display_name) "; $wu_sql .= "VALUES "; $wu_sql .= "('{$xoops_user->uid}', '{$xoops_user->uname}', '{$xoops_user->pass}', '{$xoops_user->email}', '{$xoops_user->url}', '{$xoops_user->uname}' "; $wu_sql .= " , '{$user_regist_time}', {$user_status}, '{$user_display_name}')"; $xoops_db->query($wu_sql); $wp_user_id = $xoops_user->uid; } $message .= set_user_role($wp_user_id, $roles, $new_user); } $user_nickname = empty($xoops_user->name) ? $xoops_user->uname : $xoops_user->name; $user_rich_editing = 'true'; $user_first_name = $xoops_user->uname; $user_last_name = ''; $user_description = ''; $user_jabber = ''; update_usermeta($wp_user_id, 'nickname', $user_nickname); update_usermeta($wp_user_id, 'first_name', $user_first_name); update_usermeta($wp_user_id, 'last_name', $user_last_name); update_usermeta($wp_user_id, 'description', $user_description); update_usermeta($wp_user_id, 'jabber', $user_jabber); update_usermeta($wp_user_id, 'aim', $xoops_user->user_aim); update_usermeta($wp_user_id, 'yim', $xoops_user->user_yim); if ($is_update === false) { update_usermeta($wp_user_id, 'rich_editing', $user_rich_editing); } } $message .= "...END"; return true; }