diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index ae2342bcc..15de5b3f2 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -39,7 +39,7 @@ $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', if ( !empty($action) ) { $network_wide = false; - if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && is_super_admin() ) + if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && current_user_can( 'manage_network_plugins' ) ) $network_wide = true; switch ( $action ) { @@ -378,7 +378,7 @@ $recently_activated = get_option('recently_activated', array()); $upgrade_plugins = array(); $network_plugins = array(); $mustuse_plugins = $dropins_plugins = array(); -if ( ! is_multisite() || ( is_multisite() && current_user_can('manage_network_plugins') ) ) { +if ( ! is_multisite() || current_user_can('manage_network_plugins') ) { if ( apply_filters( 'show_advanced_plugins', true, 'mustuse' ) ) $mustuse_plugins = get_mu_plugins(); if ( apply_filters( 'show_advanced_plugins', true, 'dropins' ) ) @@ -406,9 +406,11 @@ unset( $plugin_array_name ); foreach ( (array) $all_plugins as $plugin_file => $plugin_data) { // Filter into individual sections - if ( is_plugin_active_for_network($plugin_file) ) { - if ( is_super_admin() ) - $network_plugins[ $plugin_file ] = $plugin_data; + if ( is_multisite() && is_network_only_plugin( $plugin_file ) && !current_user_can( 'manage_network_plugins' ) ) { + unset( $all_plugins[ $plugin_file ] ); + continue; + } elseif ( is_plugin_active_for_network($plugin_file) ) { + $network_plugins[ $plugin_file ] = $plugin_data; } elseif ( is_plugin_active($plugin_file) ) { $active_plugins[ $plugin_file ] = $plugin_data; } else { @@ -569,7 +571,7 @@ function print_plugins_table($plugins, $context = '') { else $actions['activate'] = '' . __('Activate') . ''; - if ( is_multisite() && is_super_admin() ) + if ( is_multisite() && current_user_can( 'manage_network_plugins' ) ) $actions['network_activate'] = '' . __('Network Activate') . ''; if ( current_user_can('delete_plugins') ) diff --git a/wp-admin/user-edit.php b/wp-admin/user-edit.php index 37f5d289d..1c72aaefa 100644 --- a/wp-admin/user-edit.php +++ b/wp-admin/user-edit.php @@ -58,7 +58,7 @@ function use_ssl_preference($user) { // Only allow super admins on multisite to edit every user. -if ( is_multisite() && ! is_super_admin() && $user_id != $current_user->ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) ) +if ( is_multisite() && ! current_user_can( 'manage_network_users' ) && $user_id != $current_user->ID && ! apply_filters( 'enable_edit_any_user_configuration', true ) ) wp_die( __( 'You do not have permission to edit this user.' ) ); // Execute confirmed email change. See send_confirmation_on_profile_email(). @@ -121,7 +121,7 @@ if ( !is_multisite() ) { if ( $delete_role ) // stops users being added to current blog when they are edited delete_user_meta( $user_id, $blog_prefix . 'capabilities' ); - if ( is_multisite() && is_super_admin() && !IS_PROFILE_PAGE ) + if ( is_multisite() && !IS_PROFILE_PAGE && current_user_can( 'manage_network_options' ) ) empty( $_POST['super_admin'] ) ? revoke_super_admin( $user_id ) : grant_super_admin( $user_id ); } @@ -141,7 +141,7 @@ if ( !current_user_can('edit_user', $user_id) ) include ('admin-header.php'); ?> -ID ) ) { ?> +ID ) && current_user_can( 'manage_network_options' ) ) { ?>

@@ -235,7 +235,7 @@ else echo ''; ?> - +