ID, 'plugins_last_view', $status); $page = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1; //Clean up request URI from temporary args for screen options/paging uri's to work as expected. $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']); if ( !empty($action) ) { $network_wide = false; if ( ( isset( $_GET['networkwide'] ) || 'network-activate-selected' == $action ) && is_multisite() && is_super_admin() ) $network_wide = true; switch ( $action ) { case 'activate': if ( ! current_user_can('activate_plugins') ) wp_die(__('You do not have sufficient permissions to activate plugins for this blog.')); check_admin_referer('activate-plugin_' . $plugin); $result = activate_plugin($plugin, 'plugins.php?error=true&plugin=' . $plugin, $network_wide); if ( is_wp_error( $result ) ) { if ('unexpected_output' == $result->get_error_code()) { $redirect = 'plugins.php?error=true&charsout=' . strlen($result->get_error_data()) . '&plugin=' . $plugin; wp_redirect(add_query_arg('_error_nonce', wp_create_nonce('plugin-activation-error_' . $plugin), $redirect)); exit; } else { wp_die($result); } } $recent = (array)get_option('recently_activated'); if ( isset($recent[ $plugin ]) ) { unset($recent[ $plugin ]); update_option('recently_activated', $recent); } wp_redirect("plugins.php?activate=true&plugin_status=$status&paged=$page"); // overrides the ?error=true one above 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 blog.')); check_admin_referer('bulk-manage-plugins'); $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); $plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); // Only activate plugins which are not already active. if ( empty($plugins) ) { wp_redirect("plugins.php?plugin_status=$status&paged=$page"); exit; } activate_plugins($plugins, 'plugins.php?error=true', $network_wide); $recent = (array)get_option('recently_activated'); foreach ( $plugins as $plugin => $time) if ( isset($recent[ $plugin ]) ) unset($recent[ $plugin ]); update_option('recently_activated', $recent); wp_redirect("plugins.php?activate-multi=true&plugin_status=$status&paged=$page"); exit; break; case 'update-selected' : if ( ! current_user_can( 'update_plugins' ) ) wp_die( __( 'You do not have sufficient permissions to update plugins for this blog.' ) ); check_admin_referer( 'bulk-manage-plugins' ); if ( isset( $_GET['plugins'] ) ) $plugins = explode( ',', $_GET['plugins'] ); elseif ( isset( $_POST['checked'] ) ) $plugins = (array) $_POST['checked']; else break; if ( empty( $plugins ) ) break; // We'll be passing all checked plugins as long as at least one is out of date. $_plugins = $plugins; $current = get_site_transient( 'update_plugins' ); foreach ( $_plugins as $k => $v ) { if ( ! isset( $current->response[ $v ] ) ) unset( $_plugins[ $k ] ); } unset( $current ); // If all checked plugins are up to date if ( empty( $_plugins ) ) break; require_once( ABSPATH . 'wp-admin/includes/class-wp-upgrader.php' ); require_once( 'admin-header.php' ); $url = 'plugins.php?action=upgrade-selected&plugins=' . urlencode( join( ',', $plugins ) ); $title = __( 'Upgrade Plugins' ); $nonce = 'bulk-manage-plugins'; $parent_file = 'plugins.php'; $upgrader = new Plugin_Upgrader( new Plugin_Upgrader_Skin( compact( 'title', 'nonce', 'url' ) ) ); $upgrader->bulk_upgrade( $plugins ); require_once( 'admin-footer.php' ); exit; break; case 'error_scrape': if ( ! current_user_can('activate_plugins') ) wp_die(__('You do not have sufficient permissions to activate plugins for this blog.')); check_admin_referer('plugin-activation-error_' . $plugin); $valid = validate_plugin($plugin); if ( is_wp_error($valid) ) wp_die($valid); if ( ! WP_DEBUG ) { if ( defined('E_RECOVERABLE_ERROR') ) error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR); else error_reporting(E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING); } @ini_set('display_errors', true); //Ensure that Fatal errors are displayed. // Go back to "sandbox" scope so we get the same errors as before function plugin_sandbox_scrape( $plugin ) { include( WP_PLUGIN_DIR . '/' . $plugin ); } plugin_sandbox_scrape( $plugin ); do_action('activate_' . $plugin); exit; break; case 'deactivate': if ( ! current_user_can('activate_plugins') ) wp_die(__('You do not have sufficient permissions to deactivate plugins for this blog.')); check_admin_referer('deactivate-plugin_' . $plugin); deactivate_plugins($plugin); update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated')); if (headers_sent()) echo ""; else wp_redirect("plugins.php?deactivate=true&plugin_status=$status&paged=$page"); exit; break; case 'deactivate-selected': if ( ! current_user_can('activate_plugins') ) wp_die(__('You do not have sufficient permissions to deactivate plugins for this blog.')); check_admin_referer('bulk-manage-plugins'); $plugins = isset( $_POST['checked'] ) ? (array) $_POST['checked'] : array(); $plugins = array_filter($plugins, 'is_plugin_active'); //Do not deactivate plugins which are already deactivated. if ( empty($plugins) ) { wp_redirect("plugins.php?plugin_status=$status&paged=$page"); exit; } deactivate_plugins($plugins); $deactivated = array(); foreach ( $plugins as $plugin ) $deactivated[ $plugin ] = time(); update_option('recently_activated', $deactivated + (array)get_option('recently_activated')); wp_redirect("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page"); exit; break; case 'delete-selected': if ( ! current_user_can('delete_plugins') ) wp_die(__('You do not have sufficient permissions to delete plugins for this blog.')); check_admin_referer('bulk-manage-plugins'); //$_POST = from the plugin form; $_GET = from the FTP details screen. $plugins = isset( $_REQUEST['checked'] ) ? (array) $_REQUEST['checked'] : array(); $plugins = array_filter($plugins, create_function('$plugin', 'return !is_plugin_active($plugin);') ); //Do not allow to delete Activated plugins. if ( empty($plugins) ) { wp_redirect("plugins.php?plugin_status=$status&paged=$page"); exit; } include(ABSPATH . 'wp-admin/update.php'); $parent_file = 'plugins.php'; if ( ! isset($_REQUEST['verify-delete']) ) { wp_enqueue_script('jquery'); require_once('admin-header.php'); ?>
' . sprintf(__('If something goes wrong with a plugin and you can’t use WordPress, delete or rename that file in the %s
directory and it will be automatically deactivated.'), WP_PLUGIN_DIR) . '
' . sprintf(__('You can find additional plugins for your site by using the new Plugin Browser/Installer functionality or by browsing the WordPress Plugin Directory directly and installing manually. To manually install a plugin you generally just need to upload the plugin file into your %2$s
directory. Once a plugin has been installed, you may activate it here.'), 'plugin-install.php', WP_PLUGIN_DIR) . '
' . sprintf(__('The plugin %s
has been deactivated due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '
get_error_message() ); ?>
deleted.'); ?>
activated.') ?>
activated.'); ?>
deactivated.') ?>
deactivated.'); ?>
' . __('No plugins to show') . ' | '; } foreach ( (array)$plugins as $plugin_file => $plugin_data) { $actions = array(); if ( 'mustuse' == $context ) { $is_active = true; } elseif ( 'dropins' == $context ) { $dropins = _get_dropins(); $plugin_name = $plugin_file; if ( $plugin_file != $plugin_data['Name'] ) $plugin_name .= '||
$checkbox | $plugin_name | $description |
";
echo ' ';
foreach ( $actions as $action => $link ) {
$sep = end($actions) == $link ? '' : ' | ';
echo "$link$sep";
}
echo " |
"; $plugin_meta = array(); if ( !empty($plugin_data['Version']) ) $plugin_meta[] = sprintf(__('Version %s'), $plugin_data['Version']); if ( !empty($plugin_data['Author']) ) { $author = $plugin_data['Author']; if ( !empty($plugin_data['AuthorURI']) ) $author = '' . $plugin_data['Author'] . ''; $plugin_meta[] = sprintf( __('By %s'), $author ); } if ( ! empty($plugin_data['PluginURI']) ) $plugin_meta[] = '' . __('Visit plugin site') . ''; $plugin_meta = apply_filters('plugin_row_meta', $plugin_meta, $plugin_file, $plugin_data, $context); echo implode(' | ', $plugin_meta); echo " |