コード例 #1
0
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;
}
コード例 #2
0
ファイル: user_sync_xoops.php プロジェクト: nouphet/rata
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;
}