$caps = call_user_func_array( 'map_meta_cap', $args );
// Multisite super admin has all caps by definition, Unless specifically denied.
- if ( is_multisite() && is_super_admin() ) {
+ if ( is_multisite() && is_super_admin( $this->ID ) ) {
if ( in_array('do_not_allow', $caps) )
return false;
return true;
case 'remove_user':
$caps[] = 'remove_users';
break;
- case 'delete_user':
- $caps[] = 'delete_users';
- break;
case 'promote_user':
$caps[] = 'promote_users';
break;
// Fall through
case 'edit_users':
// If multisite these caps are allowed only for super admins.
- if ( is_multisite() && !is_super_admin() )
+ if ( is_multisite() && !is_super_admin( $user_id ) )
$caps[] = 'do_not_allow';
else
$caps[] = 'edit_users'; // Explicit due to primitive fall through
$caps[] = 'read_private_pages';
break;
case 'unfiltered_upload':
- if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin() ) )
+ if ( defined('ALLOW_UNFILTERED_UPLOADS') && ALLOW_UNFILTERED_UPLOADS && ( !is_multisite() || is_super_admin( $user_id ) ) )
$caps[] = $cap;
else
$caps[] = 'do_not_allow';
case 'delete_user':
case 'delete_users':
// If multisite these caps are allowed only for super admins.
- if ( is_multisite() && !is_super_admin() )
+ if ( is_multisite() && !is_super_admin( $user_id ) ) {
$caps[] = 'do_not_allow';
- else
+ } else {
+ if ( 'delete_user' == $cap )
+ $cap = 'delete_users';
$caps[] = $cap;
+ }
break;
case 'create_users':
if ( is_multisite() && !get_site_option( 'add_new_users' ) )
function current_user_can_for_blog( $blog_id, $capability ) {
$current_user = wp_get_current_user();
- if ( is_multisite() && is_super_admin() )
- return true;
-
if ( empty( $current_user ) )
return false;
$author = new WP_User( $post->post_author );
- if ( empty( $author ) )
+ if ( empty( $author->ID ) )
return false;
$args = array_slice( func_get_args(), 2 );