WordPress.org

Make WordPress Core

Ticket #12109: 12109.diff

File 12109.diff, 1.1 KB (added by dd32, 4 years ago)
  • wp-includes/capabilities.php

     
    722722                        $cap = $this->translate_level_to_cap( $cap ); 
    723723                } 
    724724 
    725                 // Multisite super admin has all caps by definition. 
    726                 if ( is_multisite() && is_super_admin() ) 
    727                         return true; 
    728  
    729725                $args = array_slice( func_get_args(), 1 ); 
    730726                $args = array_merge( array( $cap, $this->ID ), $args ); 
    731727                $caps = call_user_func_array( 'map_meta_cap', $args ); 
     728 
     729                // Multisite super admin has all caps by definition, Unless specifically denied. 
     730                if ( is_multisite() && is_super_admin() ) { 
     731                        if ( in_array('do_not_allow', $caps) ) 
     732                                return false; 
     733                        return true; 
     734                } 
     735 
    732736                // Must have ALL requested caps 
    733737                $capabilities = apply_filters( 'user_has_cap', $this->allcaps, $caps, $args ); 
    734738                foreach ( (array) $caps as $cap ) { 
     
    10271031function current_user_can( $capability ) { 
    10281032        $current_user = wp_get_current_user(); 
    10291033 
    1030     if ( is_multisite() && is_super_admin() ) 
    1031                 return true; 
    1032  
    10331034        if ( empty( $current_user ) ) 
    10341035                return false; 
    10351036