From 9170edb2b2a1eb8ee8731b85399be89ac58d8a9d Mon Sep 17 00:00:00 2001 From: Jeremy Felt Date: Wed, 10 Jun 2015 06:49:38 +0000 Subject: [PATCH] Improve information displayed in a network's sites list table * Better support for arbitrary domain/path combinations by displaying the URL in the primary column rather than Path or Domain. * Show a cached count of total users per site as a more useful data point rather than the first 5 users. * Clear that cached count of users for a site when a user is added to the site via `add_user_to_blog()`. Props @ocean90. Fixes #32434. git-svn-id: https://develop.svn.wordpress.org/trunk@32718 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/css/list-tables.css | 11 ++++- .../includes/class-wp-ms-sites-list-table.php | 41 +++++++++---------- src/wp-includes/ms-functions.php | 1 + 3 files changed, 30 insertions(+), 23 deletions(-) diff --git a/src/wp-admin/css/list-tables.css b/src/wp-admin/css/list-tables.css index cd36f72c7c..d7c7d7e882 100644 --- a/src/wp-admin/css/list-tables.css +++ b/src/wp-admin/css/list-tables.css @@ -259,7 +259,7 @@ table.fixed { } .fixed .column-posts { - width: 74px; + width: 74px; } .fixed .column-comment .comment-author { @@ -1510,6 +1510,15 @@ div.action-links, background: #fecac2; } +.sites.fixed .column-lastupdated, +.sites.fixed .column-registered { + width: 20%; +} + +.sites.fixed .column-users { + width: 80px; +} + /* =Media Queries -------------------------------------------------------------- */ diff --git a/src/wp-admin/includes/class-wp-ms-sites-list-table.php b/src/wp-admin/includes/class-wp-ms-sites-list-table.php index efd087d73b..587a018e61 100644 --- a/src/wp-admin/includes/class-wp-ms-sites-list-table.php +++ b/src/wp-admin/includes/class-wp-ms-sites-list-table.php @@ -111,10 +111,11 @@ class WP_MS_Sites_List_Table extends WP_List_Table { } elseif ( $order_by == 'lastupdated' ) { $query .= ' ORDER BY last_updated '; } elseif ( $order_by == 'blogname' ) { - if ( is_subdomain_install() ) + if ( is_subdomain_install() ) { $query .= ' ORDER BY domain '; - else + } else { $query .= ' ORDER BY path '; + } } elseif ( $order_by == 'blog_id' ) { $query .= ' ORDER BY blog_id '; } else { @@ -182,17 +183,17 @@ class WP_MS_Sites_List_Table extends WP_List_Table { * @return array */ public function get_columns() { - $blogname_columns = ( is_subdomain_install() ) ? __( 'Domain' ) : __( 'Path' ); $sites_columns = array( 'cb' => '', - 'blogname' => $blogname_columns, + 'blogname' => __( 'URL' ), 'lastupdated' => __( 'Last Updated' ), 'registered' => _x( 'Registered', 'site' ), - 'users' => __( 'Users' ) + 'users' => __( 'Users' ), ); - if ( has_filter( 'wpmublogsaction' ) ) + if ( has_filter( 'wpmublogsaction' ) ) { $sites_columns['plugins'] = __( 'Actions' ); + } /** * Filter the displayed site columns in Sites list table. @@ -261,7 +262,7 @@ class WP_MS_Sites_List_Table extends WP_List_Table { } echo ""; - $blogname = ( is_subdomain_install() ) ? str_replace( '.' . get_current_site()->domain, '', $blog['domain'] ) : $blog['path']; + $blogname = $blog['domain'] . $blog['path']; list( $columns, $hidden, $sortable, $primary ) = $this->get_column_info(); @@ -322,22 +323,18 @@ class WP_MS_Sites_List_Table extends WP_List_Table { break; case 'users': - $blogusers = get_users( array( 'blog_id' => $blog['blog_id'], 'number' => 6) ); - if ( is_array( $blogusers ) ) { - $blogusers_warning = ''; - if ( count( $blogusers ) > 5 ) { - $blogusers = array_slice( $blogusers, 0, 5 ); - $blogusers_warning = __( 'Only showing first 5 users.' ) . ' ' . __( 'More' ) . ''; - } - foreach ( $blogusers as $user_object ) { - echo '' . esc_html( $user_object->user_login ) . ' '; - if ( 'list' != $mode ) - echo '( ' . $user_object->user_email . ' )'; - echo '
'; - } - if ( $blogusers_warning != '' ) - echo '' . $blogusers_warning . '
'; + if ( ! $user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' ) ) { + $blog_users = get_users( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID' ) ); + $user_count = count( $blog_users ); + unset( $blog_users ); + wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS ); } + + printf( + '%s', + esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ), + number_format_i18n( $user_count ) + ); break; case 'plugins': diff --git a/src/wp-includes/ms-functions.php b/src/wp-includes/ms-functions.php index 55aff4a528..a29cecd011 100644 --- a/src/wp-includes/ms-functions.php +++ b/src/wp-includes/ms-functions.php @@ -204,6 +204,7 @@ function add_user_to_blog( $blog_id, $user_id, $role ) { */ do_action( 'add_user_to_blog', $user_id, $role, $blog_id ); wp_cache_delete( $user_id, 'users' ); + wp_cache_delete( $blog_id . '_user_count', 'blog-details' ); restore_current_blog(); return true; }