#19160 closed defect (bug) (fixed)
is_user_member_of_blog() gives unexpected results on single site
Reported by: | duck_ | Owned by: | duck_ |
---|---|---|---|
Milestone: | 3.3 | Priority: | normal |
Severity: | normal | Version: | 3.1 |
Component: | Users | Keywords: | has-patch |
Focuses: | Cc: |
Description (last modified by )
On single site with a logged in user:
var_dump( is_user_member_of_blog() ); // bool(false)
This is because when passed an empty $blog_id the function uses $wpdb->blogid as the current blog which is 0 in single site, but the blog ID set by get_blogs_of_user() is get_current_blog_id().
Two possible solutions:
- Use get_current_blog_id()
Return result of is_user_logged_in() if ! is_multisite()Only works for the current user
Attached patch for 1.
is_blog_user() was included for single site in 3.1, see [15671], and didn't work as expected then either. It also caused a PHP notice as well as returning false.
Also see #16702, especially comment 21. Noticed whilst writing patches for #19122.
Attachments (3)
Change History (10)
#2
@
13 years ago
Looks good. Any other instances of blogid we need to be worried about?
I'm thinking $wpdb->blogid shouldn't be 0 in single-site, either.
#3
@
13 years ago
Unfortunately this would mean any user, including logged out visitors, would be a member of the single site. 19160.2.diff also moves the empty( $user_id )
checking in get_blogs_of_user() to be before the ! is_multisite()
check.
What about passing random IDs of non-existent users?
#5
@
13 years ago
- Owner set to duck_
- Resolution set to fixed
- Status changed from new to closed
In [19209]:
Scratch out 2. as I wasn't thinking about passing a $user_id.