[wp-trac] [WordPress Trac] #32472: is_user_member_of_blog() can be very slow when a user is a member of hundreds of sites
WordPress Trac
noreply at wordpress.org
Sat May 23 17:41:29 UTC 2015
#32472: is_user_member_of_blog() can be very slow when a user is a member of
hundreds of sites
--------------------------+-------------------------------------
Reporter: sammybeats | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Users | Version: 3.0
Severity: normal | Resolution:
Keywords: | Focuses: multisite, performance
--------------------------+-------------------------------------
Comment (by sammybeats):
Replying to [comment:1 BinaryKitten]:
Yes! Definitely an improvement on what I posted, with one (questionable)
change and one correction:
{{{
function is_user_member_of_blog( $user_id = 0, $blog_id = 0 ) {
global $wpdb;
if( ! is_multisite() )
return true;
$user_id = (int) $user_id;
$blog_id = (int) $blog_id;
if ( empty( $user_id ) )
$user_id = get_current_user_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;
if ( empty( $blog_id ) )
$blog_id = get_current_blog_id();
$blog = get_blog_details( $blog_id );
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 ] ) && defined( 'MULTISITE'
) && $blog_id == 1 )
return true;
if ( isset( $keys[ $site_capabilities_key ] ) )
return true;
return false;
}
}}}
--
Ticket URL: <https://core.trac.wordpress.org/ticket/32472#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list