ID, 'plugins_last_view', $status); $page = isset($_REQUEST['paged']) ? $_REQUEST['paged'] : 1; 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); $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': check_admin_referer('bulk-manage-plugins'); activate_plugins($_POST['checked'], 'plugins.php?error=true'); $recent = (array)get_option('recently_activated'); foreach( (array)$_POST['checked'] 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&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&plugin_status=$status&paged=$page"); 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&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'); $plugins = $_REQUEST['checked']; //$_POST = from the plugin form; $_GET = from the FTP details screen. include(ABSPATH . 'wp-admin/update.php'); $parent_file = 'plugins.php'; if ( ! isset($_REQUEST['verify-delete']) ) { wp_enqueue_script('jquery'); require_once('admin-header.php'); ?>

'; ?>

' . __('Plugins extend and expand the functionality of WordPress. Once a plugin is installed, you may activate it or deactivate it here.') . '

'; $help .= '

' . 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) . '

'; $help .= '

' . 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) . '

'; add_contextual_help('plugins', $help); $title = __('Manage Plugins'); require_once('admin-header.php'); $invalid = validate_active_plugins(); if ( !empty($invalid) ) foreach ( $invalid as $plugin_file => $error ) echo '

' . sprintf(__('The plugin %s has been deactivated due to an error: %s'), wp_specialchars($plugin_file), $error->get_error_message()) . '

'; ?>

fatal error.') ?>

get_error_message() ); ?>

deleted.'); ?>

activated.') ?>

activated.'); ?>

deactivated.') ?>

deactivated.'); ?>

$time ) if ( $time + (7*24*60*60) < time() ) //1 week unset($recently_activated[ $key ]); if ( $recently_activated != get_option('recently_activated') ) //If array changed, update it. update_option('recently_activated', $recently_activated); $current = get_transient( 'update_plugins' ); foreach ( (array)$all_plugins as $plugin_file => $plugin_data) { //Translate, Apply Markup, Sanitize HTML $plugin_data = _get_plugin_data_markup_translate($plugin_file, $plugin_data, false, true); $all_plugins[ $plugin_file ] = $plugin_data; //Filter into individual sections if ( is_plugin_active($plugin_file) ) { $active_plugins[ $plugin_file ] = $plugin_data; } else { if ( isset( $recently_activated[ $plugin_file ] ) ) // Was the plugin recently activated? $recent_plugins[ $plugin_file ] = $plugin_data; $inactive_plugins[ $plugin_file ] = $plugin_data; } if ( isset( $current->response[ $plugin_file ] ) ) $upgrade_plugins[ $plugin_file ] = $plugin_data; } $total_all_plugins = count($all_plugins); $total_inactive_plugins = count($inactive_plugins); $total_active_plugins = count($active_plugins); $total_recent_plugins = count($recent_plugins); $total_upgrade_plugins = count($upgrade_plugins); //Searching. if ( isset($_GET['s']) ) { function _search_plugins_filter_callback($plugin) { static $term; if ( is_null($term) ) $term = stripslashes($_GET['s']); if ( stripos($plugin['Name'], $term) !== false || stripos($plugin['Description'], $term) !== false || stripos($plugin['Author'], $term) !== false || stripos($plugin['PluginURI'], $term) !== false || stripos($plugin['AuthorURI'], $term) !== false || stripos($plugin['Version'], $term) !== false ) return true; else return false; } $status = 'search'; $search_plugins = array_filter($all_plugins, '_search_plugins_filter_callback'); $total_search_plugins = count($search_plugins); } $plugin_array_name = "${status}_plugins"; $plugins = &$$plugin_array_name; //Paging. $total_this_page = "total_{$status}_plugins"; $total_this_page = $$total_this_page; $plugins_per_page = get_user_option('plugins_per_page'); if ( empty($plugins_per_page) ) $plugins_per_page = 999; $plugins_per_page = apply_filters('plugins_per_page', $plugins_per_page); $start = ($page - 1) * $plugins_per_page; $page_links = paginate_links( array( 'base' => add_query_arg( 'paged', '%#%' ), 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($total_this_page / $plugins_per_page), 'current' => $page )); $page_links_text = sprintf( '' . __( 'Displaying %s–%s of %s' ) . '%s', number_format_i18n( $start + 1 ), number_format_i18n( min( $page * $plugins_per_page, $total_this_page ) ), '' . number_format_i18n( $total_this_page ) . '', $page_links ); /** * @ignore * * @param array $plugins * @param string $context */ function print_plugins_table($plugins, $context = '') { global $page; ?> '; } foreach ( (array)$plugins as $plugin_file => $plugin_data) { $actions = array(); $is_active = is_plugin_active($plugin_file); if ( $is_active ) $actions[] = '' . __('Deactivate') . ''; else //Inactive or Recently deactivated $actions[] = '' . __('Activate') . ''; if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) ) $actions[] = '' . __('Edit') . ''; if ( ! empty($plugin_data['PluginURI']) ) { $actions[] = '' . __('View Site') . ''; } $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 " '; do_action( 'after_plugin_row', $plugin_file, $plugin_data, $context ); do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $context ); } ?>
' . __('No plugins to show') . '
{$plugin_data['Name']}"; $i = 0; echo '
'; foreach ( $actions as $action => $link ) { ++$i; ( $i == $action_count ) ? $sep = '' : $sep = ' | '; echo "$link$sep"; } echo '
'; echo "
{$plugin_data['Version']}

{$plugin_data['Description']}"; if ( !empty($plugin_data['Author']) ) { $author = $plugin_data['Author']; if ( !empty($plugin_data['AuthorURI']) ) $author = '' . $plugin_data['Author'] . ''; echo ' ' . sprintf( __('By: %s'), $author ) . ''; } echo "

"; echo '
', $page_links_text, '
'; print_plugin_actions($status); ?>
$plugins_per_page ) $plugins = array_slice($plugins, $start, $plugins_per_page); print_plugins_table($plugins, $status); ?>
$page_links_text
"; ?>