if ( is_multisite() ) {
$menu_perms = get_site_option( 'menu_items', array() );
- if ( empty( $menu_perms['plugins'] ) && ! is_super_admin() )
+ if ( empty( $menu_perms['plugins'] ) && ! current_user_can( 'manage_network_plugins' ) )
wp_die( __( 'Cheatin’ uh?' ) );
}
$_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']);
if ( $action ) {
- $network_wide = false;
- if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && current_user_can( 'manage_network_plugins' ) )
- $network_wide = true;
switch ( $action ) {
case 'activate':
check_admin_referer('activate-plugin_' . $plugin);
- $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), $network_wide);
+ $result = activate_plugin($plugin, self_admin_url('plugins.php?error=true&plugin=' . $plugin), is_network_admin() );
if ( is_wp_error( $result ) ) {
if ( 'unexpected_output' == $result->get_error_code() ) {
$redirect = self_admin_url('plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin . "&plugin_status=$status&paged=$page&s=$s");
}
}
- $recent = (array)get_option('recently_activated');
- if ( isset($recent[ $plugin ]) ) {
- unset($recent[ $plugin ]);
- update_option('recently_activated', $recent);
+ 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 );
}
+
if ( isset($_GET['from']) && 'import' == $_GET['from'] ) {
wp_redirect( self_admin_url("import.php?import=" . str_replace('-importer', '', dirname($plugin))) ); // overrides the ?error=true one above and redirects to the Imports page, stripping the -importer suffix
} else {
exit;
break;
case 'activate-selected':
- case 'network-activate-selected':
if ( ! current_user_can('activate_plugins') )
wp_die(__('You do not have sufficient permissions to activate plugins for this site.'));
$plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array();
// Only activate plugins which are not already active.
- $check = $network_wide ? '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") );
exit;
}
- activate_plugins($plugins, self_admin_url('plugins.php?error=true'), $network_wide);
-
- $recent = (array)get_option('recently_activated');
- foreach ( $plugins as $plugin => $time)
- if ( isset($recent[ $plugin ]) )
- unset($recent[ $plugin ]);
+ activate_plugins($plugins, self_admin_url('plugins.php?error=true'), is_network_admin() );
- update_option('recently_activated', $recent);
+ if ( ! is_network_admin() ) {
+ $recent = (array) get_option('recently_activated' );
+ foreach ( $plugins as $plugin )
+ unset( $recent[ $plugin ] );
+ update_option( 'recently_activated', $recent );
+ }
wp_redirect( self_admin_url("plugins.php?activate-multi=true&plugin_status=$status&paged=$page&s=$s") );
exit;
screen_icon();
echo '<h2>' . esc_html( $title ) . '</h2>';
-
$url = self_admin_url('update.php?action=update-selected&plugins=' . urlencode( join(',', $plugins) ));
$url = wp_nonce_url($url, 'bulk-update-plugins');
wp_die(__('You do not have sufficient permissions to deactivate plugins for this site.'));
check_admin_referer('deactivate-plugin_' . $plugin);
+
if ( ! is_network_admin() && is_plugin_active_for_network( $plugin ) ) {
wp_redirect( self_admin_url("plugins.php?plugin_status=$status&paged=$page&s=$s") );
exit;
}
- deactivate_plugins($plugin);
- update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated'));
+
+ deactivate_plugins( $plugin, false, is_network_admin() );
+ if ( ! is_network_admin() )
+ update_option( 'recently_activated', array( $plugin => time() ) + (array) get_option( 'recently_activated' ) );
if ( headers_sent() )
echo "<meta http-equiv='refresh' content='" . esc_attr( "0;url=plugins.php?deactivate=true&plugin_status=$status&paged=$page&s=$s" ) . "' />";
else
exit;
}
- deactivate_plugins($plugins);
+ deactivate_plugins( $plugins, false, is_network_admin() );
- $deactivated = array();
- foreach ( $plugins as $plugin )
- $deactivated[ $plugin ] = time();
+ if ( ! is_network_admin() ) {
+ $deactivated = array();
+ foreach ( $plugins as $plugin )
+ $deactivated[ $plugin ] = time();
+ update_option( 'recently_activated', $deactivated + (array) get_option( 'recently_activated' ) );
+ }
- update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
wp_redirect( self_admin_url("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page&s=$s") );
exit;
break;
exit;
break;
case 'clear-recent-list':
- update_option('recently_activated', array());
+ if ( ! is_network_admin() )
+ update_option( 'recently_activated', array() );
break;
}
}
if ( isset( $_GET['main'] ) )
$errmsg = __( 'You cannot delete a plugin while it is active on the main site.' );
elseif ( isset($_GET['charsout']) )
- $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
+ $errmsg = sprintf(__('The plugin generated %d characters of <strong>unexpected output</strong> during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.'), $_GET['charsout']);
else
$errmsg = __('Plugin could not be activated because it triggered a <strong>fatal error</strong>.');
?>
<?php screen_icon(); ?>
<h2><?php echo esc_html( $title );
if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plugins') ) { ?>
-<a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
+ <a href="<?php echo self_admin_url( 'plugin-install.php' ); ?>" class="add-new-h2"><?php echo esc_html_x('Add New', 'plugin'); ?></a>
<?php }
if ( $s )
printf( '<span class="subtitle">' . __('Search results for “%s”') . '</span>', esc_html( $s ) ); ?>