From f5ab587c9d7767e77eeaa12f8f7aec620f9f0b7a Mon Sep 17 00:00:00 2001 From: ryan Date: Wed, 3 Nov 2010 13:34:04 +0000 Subject: [PATCH] Show latest x users with no paging if on a large network. see #15170 git-svn-id: http://svn.automattic.com/wordpress/trunk@16160 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/includes/class-wp-ms-users-list-table.php | 10 ++++++++++ wp-includes/user.php | 11 +++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/wp-admin/includes/class-wp-ms-users-list-table.php b/wp-admin/includes/class-wp-ms-users-list-table.php index fdc41d19b..45abc6541 100644 --- a/wp-admin/includes/class-wp-ms-users-list-table.php +++ b/wp-admin/includes/class-wp-ms-users-list-table.php @@ -38,6 +38,16 @@ class WP_MS_Users_List_Table extends WP_List_Table { 'blog_id' => 0 ); + // If the network is large and a search is not being performed, show only the latest users with no paging in order + // to avoid expensive count queries. + if ( !$usersearch && ( get_blog_count() >= 10000 ) ) { + if ( !isset($_REQUEST['orderby']) ) + $_GET['orderby'] = $_REQUEST['orderby'] = 'id'; + if ( !isset($_REQUEST['order']) ) + $_GET['order'] = $_REQUEST['order'] = 'DESC'; + $args['count_total'] = false; + } + if ( isset( $_REQUEST['orderby'] ) ) $args['orderby'] = $_REQUEST['orderby']; diff --git a/wp-includes/user.php b/wp-includes/user.php index 2f9b31581..373b33e84 100644 --- a/wp-includes/user.php +++ b/wp-includes/user.php @@ -411,11 +411,9 @@ class WP_User_Query extends WP_Object_Query { // sorting if ( in_array( $qv['orderby'], array('email', 'url', 'registered') ) ) { $orderby = 'user_' . $qv['orderby']; - } - elseif ( 'name' == $qv['orderby'] ) { + } elseif ( 'name' == $qv['orderby'] ) { $orderby = 'display_name'; - } - elseif ( 'post_count' == $qv['orderby'] ) { + } elseif ( 'post_count' == $qv['orderby'] ) { $where = get_posts_by_author_sql('post'); $this->query_from .= " LEFT OUTER JOIN ( SELECT post_author, COUNT(*) as post_count @@ -425,8 +423,9 @@ class WP_User_Query extends WP_Object_Query { ) p ON ({$wpdb->users}.ID = p.post_author) "; $orderby = 'post_count'; - } - else { + } elseif ( 'id' == $qv['orderby'] ) { + $orderby = 'ID'; + } else { $orderby = 'user_login'; }