X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/af50974463450c98503e763a7836a50e260461a9..607b7e02d77e7326161e8ec15639052d2040f745:/wp-admin/includes/class-wp-plugin-install-list-table.php diff --git a/wp-admin/includes/class-wp-plugin-install-list-table.php b/wp-admin/includes/class-wp-plugin-install-list-table.php index 07bfa0c7..6e389b1a 100644 --- a/wp-admin/includes/class-wp-plugin-install-list-table.php +++ b/wp-admin/includes/class-wp-plugin-install-list-table.php @@ -1,18 +1,32 @@ $paged, 'per_page' => $per_page, - 'fields' => array( 'last_updated' => true, 'downloaded' => true, 'icons' => true ), + 'fields' => array( + 'last_updated' => true, + 'icons' => true, + 'active_installs' => true + ), // Send the locale and installed plugin slugs to the API so it can provide context-sensitive results. 'locale' => get_locale(), 'installed_plugins' => $this->get_installed_plugin_slugs(), @@ -140,8 +170,13 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { break; case 'favorites': - $user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' ); - update_user_meta( get_current_user_id(), 'wporg_favorites', $user ); + $action = 'save_wporg_username_' . get_current_user_id(); + if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), $action ) ) { + $user = isset( $_GET['user'] ) ? wp_unslash( $_GET['user'] ) : get_user_option( 'wporg_favorites' ); + update_user_meta( get_current_user_id(), 'wporg_favorites', $user ); + } else { + $user = get_user_option( 'wporg_favorites' ); + } if ( $user ) $args['user'] = $user; else @@ -156,11 +191,10 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } /** - * Filter API request arguments for each Plugin Install screen tab. + * Filters API request arguments for each Plugin Install screen tab. * * The dynamic portion of the hook name, `$tab`, refers to the plugin install tabs. - * Default tabs are 'dashboard', 'search', 'upload', 'featured', 'popular', 'new', - * and 'favorites'. + * Default tabs include 'featured', 'popular', 'recommended', 'favorites', and 'upload'. * * @since 3.7.0 * @@ -194,6 +228,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } } + /** + * @access public + */ public function no_items() { if ( isset( $this->error ) ) { $message = $this->error->get_error_message() . '

' . __( 'Try again' ) . '

'; @@ -203,12 +240,19 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { echo '
' . $message . '
'; } + /** + * + * @global array $tabs + * @global string $tab + * + * @return array + */ protected function get_views() { global $tabs, $tab; $display_tabs = array(); foreach ( (array) $tabs as $action => $text ) { - $class = ( $action == $tab ) ? ' current' : ''; + $class = ( $action === $tab ) ? ' current' : ''; $href = self_admin_url('plugin-install.php?tab=' . $action); $display_tabs['plugin-install-'.$action] = "$text"; } @@ -227,6 +271,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { /** This filter is documented in wp-admin/inclues/class-wp-list-table.php */ $views = apply_filters( "views_{$this->screen->id}", $views ); + $this->screen->render_screen_reader_content( 'heading_views' ); ?>
- +
- +screen->render_screen_reader_content( 'heading_list' ); +?>
> display_rows_or_placeholder(); ?>
@@ -271,6 +318,8 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } /** + * @global string $tab + * * @param string $which */ protected function display_tablenav( $which ) { @@ -278,7 +327,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { return; } - if ( 'top' == $which ) { + if ( 'top' === $which ) { wp_referer_field(); ?>
@@ -303,10 +352,16 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } } + /** + * @return array + */ protected function get_table_classes() { return array( 'widefat', $this->_args['plural'] ); } + /** + * @return array + */ public function get_columns() { return array(); } @@ -329,13 +384,16 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { return 0; } - if ( 'DESC' == $this->order ) { + if ( 'DESC' === $this->order ) { return ( $a < $b ) ? 1 : -1; } else { return ( $a < $b ) ? -1 : 1; } } + /** + * @global string $wp_version + */ public function display_rows() { $plugins_allowedtags = array( 'a' => array( 'href' => array(),'title' => array(), 'target' => array() ), @@ -401,20 +459,47 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { case 'install': if ( $status['url'] ) { /* translators: 1: Plugin name and version. */ - $action_links[] = '' . __( 'Install Now' ) . ''; + $action_links[] = '' . __( 'Install Now' ) . ''; } - break; + case 'update_available': if ( $status['url'] ) { /* translators: 1: Plugin name and version */ - $action_links[] = '' . __( 'Update Now' ) . ''; + $action_links[] = '' . __( 'Update Now' ) . ''; } - break; + case 'latest_installed': case 'newer_installed': - $action_links[] = '' . _x( 'Installed', 'plugin' ) . ''; + if ( is_plugin_active( $status['file'] ) ) { + $action_links[] = ''; + } elseif ( current_user_can( 'activate_plugins' ) ) { + $button_text = __( 'Activate' ); + /* translators: %s: Plugin name */ + $button_label = _x( 'Activate %s', 'plugin' ); + $activate_url = add_query_arg( array( + '_wpnonce' => wp_create_nonce( 'activate-plugin_' . $status['file'] ), + 'action' => 'activate', + 'plugin' => $status['file'], + ), network_admin_url( 'plugins.php' ) ); + + if ( is_network_admin() ) { + $button_text = __( 'Network Activate' ); + /* translators: %s: Plugin name */ + $button_label = _x( 'Network Activate %s', 'plugin' ); + $activate_url = add_query_arg( array( 'networkwide' => 1 ), $activate_url ); + } + + $action_links[] = sprintf( + '%3$s', + esc_url( $activate_url ), + esc_attr( sprintf( $button_label, $plugin['name'] ) ), + $button_text + ); + } else { + $action_links[] = ''; + } break; } } @@ -423,7 +508,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { '&TB_iframe=true&width=600&height=550' ); /* translators: 1: Plugin name and version. */ - $action_links[] = '' . __( 'More Details' ) . ''; + $action_links[] = '' . __( 'More Details' ) . ''; if ( !empty( $plugin['icons']['svg'] ) ) { $plugin_icon_url = $plugin['icons']['svg']; @@ -436,7 +521,7 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { } /** - * Filter the install action links for a plugin. + * Filters the install action links for a plugin. * * @since 2.7.0 * @@ -444,12 +529,18 @@ class WP_Plugin_Install_List_Table extends WP_List_Table { * @param array $plugin The plugin currently being listed. */ $action_links = apply_filters( 'plugin_install_action_links', $action_links, $plugin ); + + $last_updated_timestamp = strtotime( $plugin['last_updated'] ); ?> -
+
-
-

+

+ + + + +