WordPress.org

Make WordPress Core

Ticket #12109: 12109.diff

File 12109.diff, 1.1 KB (added by dd32, 8 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