+ if( $recent != get_option('recently_activated') ) //If array changed, update it.
+ update_option('recently_activated', $recent);
+
+ wp_redirect('plugins.php?activate-multi=true');
+ exit;
+ break;
+ case 'error_scrape':
+ check_admin_referer('plugin-activation-error_' . $plugin);
+ $valid = validate_plugin($plugin);
+ if ( is_wp_error($valid) )
+ wp_die($valid);
+ error_reporting( E_ALL ^ E_NOTICE );
+ @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
+ include(WP_PLUGIN_DIR . '/' . $plugin);
+ exit;
+ break;
+ case 'deactivate':
+ check_admin_referer('deactivate-plugin_' . $plugin);
+ deactivate_plugins($plugin);
+ update_option('recently_activated', array($plugin => time()) + (array)get_option('recently_activated'));
+ wp_redirect('plugins.php?deactivate=true');
+ exit;
+ break;
+ case 'deactivate-selected':
+ check_admin_referer('bulk-manage-plugins');
+ deactivate_plugins($_POST['checked']);
+ $deactivated = array();
+ foreach( (array)$_POST['checked'] as $plugin )
+ $deactivated[ $plugin ] = time();
+ update_option('recently_activated', $deactivated + (array)get_option('recently_activated'));
+ wp_redirect('plugins.php?deactivate-multi=true');
+ 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');
+
+ $plugins = $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen.
+ include(ABSPATH . 'wp-admin/update.php');
+
+ $title = __('Delete Plugin');
+ $parent_file = 'plugins.php';
+
+ if( ! isset($_REQUEST['verify-delete']) ) {
+ wp_enqueue_script('jquery');
+ require_once('admin-header.php');
+ ?>
+ <div class="wrap">
+ <h2><?php _e('Delete Plugin(s)'); ?></h2>
+ <?php
+ $files_to_delete = $plugin_info = array();
+ foreach( (array) $plugins as $plugin ) {
+ if( '.' == dirname($plugin) ) {
+ $files_to_delete[] = WP_PLUGIN_DIR . '/' . $plugin;
+ if( $data = get_plugin_data(WP_PLUGIN_DIR . '/' . $plugin) )
+ $plugin_info[ $plugin ] = $data;
+ } else {
+ //Locate all the files in that folder:
+ $files = list_files( WP_PLUGIN_DIR . '/' . dirname($plugin) );
+ if( $files ) {
+ $files_to_delete = array_merge($files_to_delete, $files);
+ }
+ //Get plugins list from that folder
+ if ( $folder_plugins = get_plugins( '/' . dirname($plugin)) )
+ $plugin_info = array_merge($plugin_info, $folder_plugins);
+ }
+ }
+ ?>
+ <p><?php _e('Deleting the selected plugins will remove the following plugin(s) and their files:'); ?></p>
+ <p>
+ <ul>
+ <?php
+ foreach( $plugin_info as $plugin )
+ echo '<li>', $plugin['Title'], ' ', __('By'), ' ', $plugin['Author'], '</li>';
+ ?>
+ </ul>
+ </p>
+ <p><?php _e('Are you sure you wish to delete these files?') ?></p>
+ <form method="post" action="<?php echo clean_url($_SERVER['REQUEST_URI']); ?>" style="display:inline;">
+ <input type="hidden" name="verify-delete" value="1" />
+ <input type="hidden" name="delete-selected" value="1" />
+ <?php
+ foreach( (array)$plugins as $plugin ) {
+ $plugin = attribute_escape($plugin);
+ echo "<input type='hidden' name='checked[]' value='$plugin' />";
+ }
+ ?>
+ <?php wp_nonce_field('bulk-manage-plugins') ?>
+ <input type="submit" name="submit" value="<?php _e('Yes, Delete these files') ?>" class="button" />
+ </form>
+ <form method="post" action="<?php echo clean_url(wp_get_referer()); ?>" style="display:inline;">
+ <input type="submit" name="submit" value="<?php _e('No, Return me to the plugin list') ?>" class="button" />
+ </form>
+
+ <p><a href="#" onclick="jQuery('#files-list').toggle(); return false;"><?php _e('Click to view entire list of files which will be deleted'); ?></a></p>
+ <div id="files-list" style="display:none;">
+ <ul>
+ <?php
+ foreach( (array)$files_to_delete as $file ) {
+ $file = str_replace(ABSPATH, '', $file);
+ echo "<li>$file</li>";
+ }
+ ?>
+ </ul>
+ </div>
+ </div>
+ <?php
+ require_once('admin-footer.php');
+ exit;
+ } //Endif verify-delete
+ $delete_result = delete_plugins($plugins);
+
+ wp_cache_delete('plugins', 'plugins');
+ break;
+ case 'clear-recent-list':
+ update_option('recently_activated', array());
+ break;