X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/874d2a2f468a0d1e69aab49b1fe2d9d79d3e1142..d3947bc013df7edd54b46deed8230d2eeafc5ecb:/wp-admin/includes/class-wp-plugin-install-list-table.php?ds=sidebyside
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 50a4a97a..26c8a0a2 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(),
@@ -134,12 +165,18 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
case 'popular':
case 'new':
case 'beta':
+ case 'recommended':
$args['browse'] = $tab;
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,9 +193,8 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
/**
* Filter 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'.
+ * The dynamic portion of the hook name, `$tab`, refers to the plugin install tabs.
+ * Default tabs include 'featured', 'popular', 'recommended', 'favorites', and 'upload'.
*
* @since 3.7.0
*
@@ -192,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' ) . '
';
@@ -201,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";
}
@@ -225,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' );
?>
@@ -259,7 +306,9 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
?>
-
+screen->render_screen_reader_content( 'heading_list' );
+?>
>
display_rows_or_placeholder(); ?>
@@ -268,12 +317,17 @@ class WP_Plugin_Install_List_Table extends WP_List_Table {
$this->display_tablenav( 'bottom' );
}
+ /**
+ * @global string $tab
+ *
+ * @param string $which
+ */
protected function display_tablenav( $which ) {
if ( $GLOBALS['tab'] === 'featured' ) {
return;
}
- if ( 'top' == $which ) {
+ if ( 'top' === $which ) {
wp_referer_field();
?>
@@ -298,14 +352,25 @@ 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();
}
+ /**
+ * @param object $plugin_a
+ * @param object $plugin_b
+ * @return int
+ */
private function order_callback( $plugin_a, $plugin_b ) {
$orderby = $this->orderby;
if ( ! isset( $plugin_a->$orderby, $plugin_b->$orderby ) ) {
@@ -319,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() ),
@@ -391,20 +459,20 @@ 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' ) . '';
+ $action_links[] = '
' . _x( 'Installed', 'plugin' ) . '';
break;
}
}
@@ -413,7 +481,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'];
@@ -434,12 +502,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'] );
?>
-
+
-
$plugin['rating'], 'type' => 'percent', 'number' => $plugin['num_ratings'] ) ); ?>
- ()
+ ()
-
-
-
+
-
+ = 1000000 ) {
+ $active_installs_text = _x( '1+ Million', 'Active plugin installs' );
+ } else {
+ $active_installs_text = number_format_i18n( $plugin['active_installs'] ) . '+';
+ }
+ printf( __( '%s Active Installs' ), $active_installs_text );
+ ?>
' ) ) {
- echo '' . __( 'Untested with your version of WordPress' ) . '';
+ echo '' . __( 'Untested with your version of WordPress' ) . '';
} elseif ( ! empty( $plugin['requires'] ) && version_compare( substr( $GLOBALS['wp_version'], 0, strlen( $plugin['requires'] ) ), $plugin['requires'], '<' ) ) {
echo '' . __( 'Incompatible with your version of WordPress' ) . '';
} else {