Make WordPress Core

Changeset 21198


Ignore:
Timestamp:
06/30/2012 12:40:25 PM (13 years ago)
Author:
nacin
Message:

Enforce multisite plugins menu preference in map_meta_cap(). This means a simple current_user_can('activate_plugins') check will handle the 'Enable administration menus' setting.

Remove bogus checks for enabling/disabling the 'themes' menu (something core does not handle out of the box) when in the network admin.

fixes #21123.

Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/class-wp-ms-themes-list-table.php

    r21164 r21198  
    3838
    3939    function ajax_user_can() {
    40         $menu_perms = get_site_option( 'menu_items', array() );
    41 
    42         if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
    43             return false;
    44 
    45         if ( $this->is_site_themes && !current_user_can('manage_sites') )
    46             return false;
    47         elseif ( !$this->is_site_themes && !current_user_can('manage_network_themes') )
    48             return false;
    49         return true;
     40        if ( $this->is_site_themes )
     41            return current_user_can( 'manage_sites' );
     42        else
     43            return current_user_can( 'manage_network_themes' );
    5044    }
    5145
  • trunk/wp-admin/includes/class-wp-plugins-list-table.php

    r20853 r21198  
    3232
    3333    function ajax_user_can() {
    34         if ( is_multisite() ) {
    35             $menu_perms = get_site_option( 'menu_items', array() );
    36 
    37             if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() )
    38                 return false;
    39         }
    40 
    4134        return current_user_can('activate_plugins');
    4235    }
  • trunk/wp-admin/menu.php

    r20449 r21198  
    143143}
    144144
    145 $menu_perms = get_site_option( 'menu_items', array() );
    146 if ( ! is_multisite() || is_super_admin() || ! empty( $menu_perms['plugins'] ) ) {
    147     if ( ! isset( $update_data ) )
    148         $update_data = wp_get_update_data();
    149 
    150145    $count = '';
    151     if ( ! is_multisite() && current_user_can( 'update_plugins' ) )
     146    if ( ! is_multisite() && current_user_can( 'update_plugins' ) ) {
     147        if ( ! isset( $update_data ) )
     148            $update_data = wp_get_update_data();
    152149        $count = "<span class='update-plugins count-{$update_data['counts']['plugins']}'><span class='plugin-count'>" . number_format_i18n($update_data['counts']['plugins']) . "</span></span>";
     150    }
    153151
    154152    $menu[65] = array( sprintf( __('Plugins %s'), $count ), 'activate_plugins', 'plugins.php', '', 'menu-top menu-icon-plugins', 'menu-plugins', 'div' );
     
    161159            $submenu['plugins.php'][15] = array( _x('Editor', 'plugin editor'), 'edit_plugins', 'plugin-editor.php' );
    162160        }
    163 }
    164 unset($menu_perms, $update_data);
     161
     162unset( $update_data );
    165163
    166164if ( current_user_can('list_users') )
  • trunk/wp-admin/network/site-themes.php

    r20713 r21198  
    1313if ( ! is_multisite() )
    1414    wp_die( __( 'Multisite support is not enabled.' ) );
    15 
    16 $menu_perms = get_site_option( 'menu_items', array() );
    17 
    18 if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
    19     wp_die( __( 'Cheatin&#8217; uh?' ) );
    2015
    2116if ( ! current_user_can( 'manage_sites' ) )
  • trunk/wp-admin/network/themes.php

    r21062 r21198  
    1313if ( ! is_multisite() )
    1414    wp_die( __( 'Multisite support is not enabled.' ) );
    15 
    16 $menu_perms = get_site_option( 'menu_items', array() );
    17 
    18 if ( empty( $menu_perms['themes'] ) && ! is_super_admin() )
    19     wp_die( __( 'Cheatin&#8217; uh?' ) );
    2015
    2116if ( !current_user_can('manage_network_themes') )
  • trunk/wp-admin/plugins.php

    r20871 r21198  
    1010require_once('./admin.php');
    1111
    12 if ( is_multisite() ) {
    13     $menu_perms = get_site_option( 'menu_items', array() );
    14 
    15     if ( empty( $menu_perms['plugins'] ) && ! current_user_can( 'manage_network_plugins' ) )
    16         wp_die( __( 'Cheatin&#8217; uh?' ) );
    17 }
    18 
    19 if ( !current_user_can('activate_plugins') )
     12if ( ! current_user_can('activate_plugins') )
    2013    wp_die( __( 'You do not have sufficient permissions to manage plugins for this site.' ) );
    2114
  • trunk/wp-includes/capabilities.php

    r21152 r21198  
    11651165            $caps[] = $cap;
    11661166        break;
     1167    case 'activate_plugins':
     1168        $caps[] = $cap;
     1169        if ( is_multisite() ) {
     1170            // update_, install_, and delete_ are handled above with is_super_admin().
     1171            $menu_perms = get_site_option( 'menu_items', array() );
     1172            if ( empty( $menu_perms['plugins'] ) )
     1173                $caps[] = 'manage_network_plugins';
     1174        }
     1175        break;
    11671176    case 'delete_user':
    11681177    case 'delete_users':
Note: See TracChangeset for help on using the changeset viewer.