diff -r a4642baaf829 -r 4d4862461b8d web/wp-admin/plugins.php
--- a/web/wp-admin/plugins.php Tue Feb 02 14:45:47 2010 +0000
+++ b/web/wp-admin/plugins.php Tue Feb 02 15:44:16 2010 +0000
@@ -1,575 +1,580 @@
-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':
- 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);
- 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':
- 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 = (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 ( $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 '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);
-
- 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':
- 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'));
- 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 = (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 ( $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');
-
- $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');
-
- $parent_file = 'plugins.php';
-
- if ( ! isset($_REQUEST['verify-delete']) ) {
- wp_enqueue_script('jquery');
- require_once('admin-header.php');
- ?>
-
-
-
-
-
- ', sprintf(__('%s by %s '), $plugin['Name'], $plugin['Author']), '';
- ?>
-
-
-
-
-
-
-
-
- ' . str_replace(WP_PLUGIN_DIR, '', $file) . '';
- ?>
-
-
-
- ' . __('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'), esc_html($plugin_file), $error->get_error_message()) . '
';
-?>
-
-
- fatal error.') ?>
-
-
-
-
-
- get_error_message() ); ?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $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";
-if ( empty($$plugin_array_name) && $status != 'all' ) {
- $status = 'all';
- $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;
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ' . __('No plugins to show') . '
- ';
- }
- foreach ( (array)$plugins as $plugin_file => $plugin_data) {
- $actions = array();
- $is_active = is_plugin_active($plugin_file);
-
- if ( $is_active )
- $actions[] = '' . __('Deactivate') . ' ';
- else
- $actions[] = '' . __('Activate') . ' ';
-
- if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
- $actions[] = '' . __('Edit') . ' ';
-
- 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['Name']}
- {$plugin_data['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 "
- \n";
-
- do_action( 'after_plugin_row', $plugin_file, $plugin_data, $context );
- do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $context );
- }
-?>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $plugins_per_page )
- $plugins = array_slice($plugins, $start, $plugins_per_page);
-
- print_plugins_table($plugins, $status);
-?>
-
-$page_links_text
";
-
-print_plugin_actions($status, "action2");
-?>
-
-
-
-
-
-
-
-
-
-
+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':
+ 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);
+ 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':
+ 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');
+
+ $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 '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 ( defined('E_RECOVERABLE_ERROR') )
+ error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR);
+ else
+ error_reporting(E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING);
+
+ @ini_set('display_errors', true); //Ensure that Fatal errors are displayed.
+ include(WP_PLUGIN_DIR . '/' . $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'));
+ 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(__('%s by %s '), $plugin['Name'], $plugin['Author']), '';
+ ?>
+
+
+
+
+
+
+
+
+ ' . str_replace(WP_PLUGIN_DIR, '', $file) . '';
+ ?>
+
+
+
+ ' . __('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'), esc_html($plugin_file), $error->get_error_message()) . '
';
+?>
+
+
+ fatal error.') ?>
+
+
+
+
+
+ get_error_message() ); ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $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";
+if ( empty($$plugin_array_name) && $status != 'all' ) {
+ $status = 'all';
+ $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 = (int) get_user_option( 'plugins_per_page', 0, false );
+if ( empty( $plugins_per_page ) || $plugins_per_page < 1 )
+ $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;
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ' . __('No plugins to show') . '
+ ';
+ }
+ foreach ( (array)$plugins as $plugin_file => $plugin_data) {
+ $actions = array();
+ $is_active = is_plugin_active($plugin_file);
+
+ if ( $is_active )
+ $actions[] = '' . __('Deactivate') . ' ';
+ else
+ $actions[] = '' . __('Activate') . ' ';
+
+ if ( current_user_can('edit_plugins') && is_writable(WP_PLUGIN_DIR . '/' . $plugin_file) )
+ $actions[] = '' . __('Edit') . ' ';
+
+ 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['Name']}
+ {$plugin_data['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 "
+ \n";
+
+ do_action( 'after_plugin_row', $plugin_file, $plugin_data, $context );
+ do_action( "after_plugin_row_$plugin_file", $plugin_file, $plugin_data, $context );
+ }
+?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $plugins_per_page )
+ $plugins = array_slice($plugins, $start, $plugins_per_page);
+
+ print_plugins_table($plugins, $status);
+?>
+
+$page_links_text
";
+
+print_plugin_actions($status, "action2");
+?>
+
+
+
+
+
+
+
+
+
+