From 368f0c38629930e99ca1cff4ae9e4a20c79325aa Mon Sep 17 00:00:00 2001
From: Florian TIAR <contact@tiar-florian.fr>
Date: Tue, 27 Sep 2016 18:38:07 +0200
Subject: [PATCH 1/3] Add first username and link to all username of a site in
 wp admin list sites (multisite)

---
 wp-admin/includes/class-wp-ms-sites-list-table.php | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php
index 9ce3ffe..9d61008 100644
--- a/wp-admin/includes/class-wp-ms-sites-list-table.php
+++ b/wp-admin/includes/class-wp-ms-sites-list-table.php
@@ -388,24 +388,36 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 	 * Handles the users column output.
 	 *
 	 * @since 4.3.0
+	 * @since 4.7.0 Display First user of the site, and number of users in the site
 	 * @access public
 	 *
 	 * @param array $blog Current site.
 	 */
 	public function column_users( $blog ) {
+		$blog_users = get_users( array( 'blog_id' => $blog['blog_id'] ) );
 		$user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' );
 		if ( ! $user_count ) {
-			$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(
 			'<a href="%s">%s</a>',
-			esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
-			number_format_i18n( $user_count )
+			esc_url( network_admin_url( 'user-edit.php?user_id=' . $blog_users[0]->ID ) ),
+			$blog_users[0]->user_login
 		);
+
+		if ( $user_count > 1 ) {
+			printf( '<a href="%s">%s</a>',
+				esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
+				sprintf(
+					_x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
+					number_format_i18n( $user_count )
+				)
+			);
+		}
+
+		unset( $blog_users );
 	}
 
 	/**
-- 
1.9.5.github.0


From 471a3e75e984dd41d5c402a2075fb2e796d254da Mon Sep 17 00:00:00 2001
From: Florian TIAR <contact@tiar-florian.fr>
Date: Tue, 27 Sep 2016 19:09:36 +0200
Subject: [PATCH 2/3] Fix get_users args to get the first user of blog

---
 wp-admin/includes/class-wp-ms-sites-list-table.php | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php
index 9d61008..c3a4df4 100644
--- a/wp-admin/includes/class-wp-ms-sites-list-table.php
+++ b/wp-admin/includes/class-wp-ms-sites-list-table.php
@@ -394,17 +394,23 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 	 * @param array $blog Current site.
 	 */
 	public function column_users( $blog ) {
-		$blog_users = get_users( array( 'blog_id' => $blog['blog_id'] ) );
+		$blog_users = get_users( array(
+			'blog_id' => $blog['blog_id'],
+			'fields'  => 'ID',
+			'orderby' => 'registered',
+		) );
+
 		$user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' );
 		if ( ! $user_count ) {
 			$user_count = count( $blog_users );
 			wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS );
 		}
 
+		$first_blog_user = get_user_by( 'id', $blog_users[0] );
 		printf(
 			'<a href="%s">%s</a>',
-			esc_url( network_admin_url( 'user-edit.php?user_id=' . $blog_users[0]->ID ) ),
-			$blog_users[0]->user_login
+			esc_url( network_admin_url( 'user-edit.php?user_id=' . $first_blog_user->ID ) ),
+			$first_blog_user->user_login
 		);
 
 		if ( $user_count > 1 ) {
-- 
1.9.5.github.0


From cc56aea302e9a95a02d8f5efe8f3aedb6abe49e9 Mon Sep 17 00:00:00 2001
From: Florian TIAR <contact@tiar-florian.fr>
Date: Tue, 27 Sep 2016 19:54:24 +0200
Subject: [PATCH 3/3] Fix counting value and handle excerpt mode

---
 wp-admin/includes/class-wp-ms-sites-list-table.php | 52 +++++++++++++++++-----
 1 file changed, 41 insertions(+), 11 deletions(-)

diff --git a/wp-admin/includes/class-wp-ms-sites-list-table.php b/wp-admin/includes/class-wp-ms-sites-list-table.php
index c3a4df4..0d8410a 100644
--- a/wp-admin/includes/class-wp-ms-sites-list-table.php
+++ b/wp-admin/includes/class-wp-ms-sites-list-table.php
@@ -394,9 +394,13 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 	 * @param array $blog Current site.
 	 */
 	public function column_users( $blog ) {
+		$mode = '';
+		if ( isset( $_GET['mode'] ) && 'excerpt' === $_GET['mode'] ) {
+			$mode = 'excerpt';
+		}
+
 		$blog_users = get_users( array(
 			'blog_id' => $blog['blog_id'],
-			'fields'  => 'ID',
 			'orderby' => 'registered',
 		) );
 
@@ -406,21 +410,47 @@ class WP_MS_Sites_List_Table extends WP_List_Table {
 			wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS );
 		}
 
-		$first_blog_user = get_user_by( 'id', $blog_users[0] );
 		printf(
 			'<a href="%s">%s</a>',
-			esc_url( network_admin_url( 'user-edit.php?user_id=' . $first_blog_user->ID ) ),
-			$first_blog_user->user_login
+			esc_url( network_admin_url( 'user-edit.php?user_id=' . $blog_users[0]->ID ) ),
+			$blog_users[0]->user_login
 		);
 
 		if ( $user_count > 1 ) {
-			printf( '<a href="%s">%s</a>',
-				esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
-				sprintf(
-					_x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
-					number_format_i18n( $user_count )
-				)
-			);
+			if ( 'excerpt' === $mode) {
+				foreach ( $blog_users as $key => $user ) {
+					// Don't display again the first user
+					if ( 0 === $key ) {
+						continue;
+					}
+
+					printf(
+						'<a href="%s">%s</a>',
+						esc_url( network_admin_url( 'user-edit.php?user_id=' . $user->ID ) ),
+						$user->user_login
+					);
+
+					// Only display 10 first users
+					if ( $user_count > 10 && 9 === $key ) {
+						printf( '<a href="%s">%s</a>',
+							esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
+							sprintf(
+								_x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
+								number_format_i18n( $user_count -10 )
+							)
+						);
+						break;
+					}
+				}
+			} else { // List mode
+				printf( '<a href="%s">%s</a>',
+					esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
+					sprintf(
+						_x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
+						number_format_i18n( $user_count -1 )
+					)
+				);
+			}
 		}
 
 		unset( $blog_users );
-- 
1.9.5.github.0

