X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/8a06f4f9392d1ac373442f82ee40428a3cb81395..4f4e083f6f77639c41e2b1ddb200de8e34301cee:/wp-admin/plugins.php diff --git a/wp-admin/plugins.php b/wp-admin/plugins.php index 46d2b611..5a22807e 100644 --- a/wp-admin/plugins.php +++ b/wp-admin/plugins.php @@ -1,98 +1,146 @@ 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) ) { + switch ( $action ) { case 'activate': check_admin_referer('activate-plugin_' . $plugin); + $result = activate_plugin($plugin, 'plugins.php?error=true&plugin=' . $plugin); if ( is_wp_error( $result ) ) - wp_die( $result->get_error_message() ); + wp_die($result); + $recent = (array)get_option('recently_activated'); - if( isset($recent[ $plugin ]) ){ + if ( isset($recent[ $plugin ]) ) { unset($recent[ $plugin ]); update_option('recently_activated', $recent); } - wp_redirect('plugins.php?activate=true'); // overrides the ?error=true one above + + wp_redirect("plugins.php?activate=true&plugin_status=$status&paged=$page"); // overrides the ?error=true one above exit; break; case 'activate-selected': check_admin_referer('bulk-manage-plugins'); - activate_plugins($_POST['checked'], 'plugins.php?error=true'); + + $plugins = (array) $_POST['checked']; + $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'); $recent = (array)get_option('recently_activated'); - foreach( (array)$_POST['checked'] as $plugin => $time) { - if( isset($recent[ $plugin ]) ) + foreach ( $plugins as $plugin => $time) + if ( isset($recent[ $plugin ]) ) unset($recent[ $plugin ]); - } - if( $recent != get_option('recently_activated') ) //If array changed, update it. - update_option('recently_activated', $recent); - wp_redirect('plugins.php?activate-multi=true'); + update_option('recently_activated', $recent); + + wp_redirect("plugins.php?activate-multi=true&plugin_status=$status&paged=$page"); 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); + do_action('activate_' . $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'); + wp_redirect("plugins.php?deactivate=true&plugin_status=$status&paged=$page"); exit; break; case 'deactivate-selected': check_admin_referer('bulk-manage-plugins'); - deactivate_plugins($_POST['checked']); + + $plugins = (array) $_POST['checked']; + $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( (array)$_POST['checked'] as $plugin ) + foreach ( $plugins as $plugin ) $deactivated[ $plugin ] = time(); + update_option('recently_activated', $deactivated + (array)get_option('recently_activated')); - wp_redirect('plugins.php?deactivate-multi=true'); + wp_redirect("plugins.php?deactivate-multi=true&plugin_status=$status&paged=$page"); exit; break; case 'delete-selected': - if( ! current_user_can('delete_plugins') ) + 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. + + $plugins = (array) $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen. + $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'); - $title = __('Delete Plugin'); $parent_file = 'plugins.php'; - - if( ! isset($_REQUEST['verify-delete']) ) { + + 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'), wp_specialchars($plugin_file), $error->get_error_message()) . '
' . sprintf(__('The plugin %s
has been deactivated due to an error: %s'), esc_html($plugin_file), $error->get_error_message()) . '
fatal error.') ?>
- +get_error_message() ); ?>
- | - | - | - | + | + | + | |
---|---|---|---|---|---|---|---|
+ | + | + | ' . __('No plugins to show') . ' | +' . __('No plugins to show') . ' | '; } - foreach( (array)$plugins as $plugin_file => $plugin_data) { - $action_links = array(); + foreach ( (array)$plugins as $plugin_file => $plugin_data) { + $actions = array(); + $is_active = is_plugin_active($plugin_file); - if( 'active' == $context ) - $action_links[] = '' . __('Deactivate') . ''; - else //Available or Recently deactivated - $action_links[] = '' . __('Activate') . ''; + if ( $is_active ) + $actions[] = '' . __('Deactivate') . ''; + else + $actions[] = '' . __('Activate') . ''; if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) - $action_links[] = '' . __('Edit') . ''; + $actions[] = '' . __('Edit') . ''; - $action_links = apply_filters('plugin_action_links', $action_links, $plugin_file, $plugin_data, $context); + if ( ! $is_active && current_user_can('delete_plugins') ) + $actions[] = '' . __('Delete') . ''; + $actions = apply_filters( 'plugin_action_links', $actions, $plugin_file, $plugin_data, $context ); + $actions = apply_filters( "plugin_action_links_$plugin_file", $actions, $plugin_file, $plugin_data, $context ); + $action_count = count($actions); + $class = $is_active ? 'active' : 'inactive'; echo " -|||
- | {$plugin_data['Title']} | -{$plugin_data['Version']} | +|||||
+ | {$plugin_data['Name']} | {$plugin_data['Description']} |
- "; - if ( !empty($action_links) ) - echo implode(' | ', $action_links); - echo ' | -||||
+ | ";
+ 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 " | +
WordPress plugin directory.'); ?>
-%s directory. Once a plugin is uploaded, you may activate it here.'), WP_PLUGIN_DIR); ?>
-