function get_currentuserinfo() { global $current_user; global $xoopsModule,$xoopsUser,$xoopsUserIsAdmin; if ($xoopsModule){ if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) return false; if (is_object($xoopsUser)){ // When the user is logging in xoops if ( ! empty($current_user) ){ $xoops_user = $xoopsUser->getVar("uname"); if ($current_user->user_login == $xoops_user){ // If xoops login user and wordpress current user are the same return; } } if (check_xpress_auth_cookie()){ //The cookie is login user's or it checks it if (function_exists('wp_validate_auth_cookie')){ if ( $user = wp_validate_auth_cookie() ) { // When the user meta prefix is different according to the change in the xoops data base prefix, it restores it. if (!check_user_meta_prefix($user)){ repair_user_meta_prefix(); } wp_set_current_user($user); return ; } } else { // for WP2.0 if ( !empty($_COOKIE[USER_COOKIE]) && !empty($_COOKIE[PASS_COOKIE])){ if(wp_login($_COOKIE[USER_COOKIE], $_COOKIE[PASS_COOKIE], true) ) { $user_login = $_COOKIE[USER_COOKIE]; wp_set_current_user(0, $user_login); return; } } } } return xpress_login(); } else { // For the xoops guest if ( ! empty($current_user) ){ // When a current user of wordpress is set, a current user is cleared. wp_set_current_user(0); wp_logout(); wp_clear_auth_cookie(); } return false; } } else { // WP original if ( defined('XMLRPC_REQUEST') && XMLRPC_REQUEST ) return false; if ( ! empty($current_user) ) return; if (function_exists('wp_validate_auth_cookie')){ if ( ! $user = wp_validate_auth_cookie() ) { if ( empty($_COOKIE[LOGGED_IN_COOKIE]) || !$user = wp_validate_auth_cookie($_COOKIE[LOGGED_IN_COOKIE], 'logged_in') ) { wp_set_current_user(0); return false; } } wp_set_current_user($user); } else { // for WP2.0 if ( empty($_COOKIE[USER_COOKIE]) || empty($_COOKIE[PASS_COOKIE]) || !wp_login($_COOKIE[USER_COOKIE], $_COOKIE[PASS_COOKIE], true) ) { wp_set_current_user(0); return false; } $user_login = $_COOKIE[USER_COOKIE]; wp_set_current_user(0, $user_login); } } }
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; }