From 7e4d3d4136ba54b5e4b3f1aa5b52be5bbb1a7be9 Mon Sep 17 00:00:00 2001 From: Andrew Nacin Date: Tue, 4 Sep 2012 20:51:33 +0000 Subject: [PATCH] Only allow operations on network plugins through the network admin. see #21187, for trunk. git-svn-id: http://core.svn.wordpress.org/trunk@21740 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/plugins.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index ff677d4f06..33a2110968 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -44,6 +44,11 @@ if ( $action ) { } if ( ! is_network_admin() ) { + if ( is_network_only_plugin( $plugin ) ) { + wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") ); + exit; + } + $recent = (array) get_option( 'recently_activated' ); unset( $recent[ $plugin ] ); update_option( 'recently_activated', $recent ); @@ -65,10 +70,17 @@ if ( $action ) { $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); // Only activate plugins which are not already active. - $check = is_network_admin() ? 'is_plugin_active_for_network' : 'is_plugin_active'; - foreach ( $plugins as $i => $plugin ) - if ( $check( $plugin ) ) - unset( $plugins[ $i ] ); + if ( is_network_admin() ) { + foreach ( $plugins as $i => $plugin ) { + if ( is_plugin_active_for_network( $plugin ) ) + unset( $plugins[ $i ] ); + } + } else { + foreach ( $plugins as $i => $plugin ) { + if ( is_plugin_active( $plugin ) || is_network_only_plugin( $plugin ) ) + unset( $plugins[ $i ] ); + } + } if ( empty($plugins) ) { wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );