Improve the efficiency of `is_user_member_of_blog()` by removing its use of `get_blogs_of_user()`. Adds additional tests.
Fixes #32472 Props BinaryKitten, sammybeats, johnbillion Built from https://develop.svn.wordpress.org/trunk@33771 git-svn-id: http://core.svn.wordpress.org/trunk@33739 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
b9ec4136d9
commit
69bee8ed43
|
@ -583,17 +583,58 @@ function get_blogs_of_user( $user_id, $all = false ) {
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
|
function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
|
||||||
|
global $wpdb;
|
||||||
|
|
||||||
$user_id = (int) $user_id;
|
$user_id = (int) $user_id;
|
||||||
$blog_id = (int) $blog_id;
|
$blog_id = (int) $blog_id;
|
||||||
|
|
||||||
if ( empty( $user_id ) )
|
if ( empty( $user_id ) ) {
|
||||||
$user_id = get_current_user_id();
|
$user_id = get_current_user_id();
|
||||||
|
}
|
||||||
|
|
||||||
if ( empty( $blog_id ) )
|
// Technically not needed, but does save calls to get_blog_details and get_user_meta
|
||||||
|
// in the event that the function is called when a user isn't logged in
|
||||||
|
if ( empty( $user_id ) ) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
$user = get_userdata( $user_id );
|
||||||
|
if ( ! $user instanceof WP_User ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! is_multisite() ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( empty( $blog_id ) ) {
|
||||||
$blog_id = get_current_blog_id();
|
$blog_id = get_current_blog_id();
|
||||||
|
}
|
||||||
|
|
||||||
$blogs = get_blogs_of_user( $user_id );
|
$blog = get_blog_details( $blog_id );
|
||||||
return array_key_exists( $blog_id, $blogs );
|
|
||||||
|
if ( ! $blog || ! isset( $blog->domain ) || $blog->archived || $blog->spam || $blog->deleted ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
$keys = get_user_meta( $user_id );
|
||||||
|
if ( empty( $keys ) ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// no underscore before capabilities in $base_capabilities_key
|
||||||
|
$base_capabilities_key = $wpdb->base_prefix . 'capabilities';
|
||||||
|
$site_capabilities_key = $wpdb->base_prefix . $blog_id . '_capabilities';
|
||||||
|
|
||||||
|
if ( isset( $keys[ $base_capabilities_key ] ) && $blog_id == 1 ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( isset( $keys[ $site_capabilities_key ] ) ) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '4.4-alpha-33770';
|
$wp_version = '4.4-alpha-33771';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue