WordPress.org

Make WordPress Core

Ticket #33967: 33967.8.patch

File 33967.8.patch, 5.4 KB (added by Mista-Flo, 5 years ago)

Fix patch with enhanced performance

  • wp-admin/includes/class-wp-ms-sites-list-table.php

    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..13206d7 100644
    a b class WP_MS_Sites_List_Table extends WP_List_Table { 
    388388         * Handles the users column output.
    389389         *
    390390         * @since 4.3.0
     391         * @since 4.7.0 Display First user of the site, and number of users in the site
    391392         * @access public
    392393         *
    393394         * @param array $blog Current site.
    394395         */
    395396        public function column_users( $blog ) {
     397                global $mode;
     398
    396399                $user_count = wp_cache_get( $blog['blog_id'] . '_user_count', 'blog-details' );
    397400                if ( ! $user_count ) {
    398                         $blog_users = get_users( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID' ) );
    399                         $user_count = count( $blog_users );
     401                        $blog_users = new WP_User_Query( array( 'blog_id' => $blog['blog_id'], 'fields' => 'ID', 'count_total' => true, 'number' => 1 ) );
     402                        $user_count = $blog_users->total_users;
    400403                        unset( $blog_users );
     404
    401405                        wp_cache_set( $blog['blog_id'] . '_user_count', $user_count, 'blog-details', 12 * HOUR_IN_SECONDS );
    402406                }
    403407
    404                 printf(
    405                         '<a href="%s">%s</a>',
    406                         esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
    407                         number_format_i18n( $user_count )
    408                 );
     408                if ( empty ( $user_count ) ) {
     409                        printf( __( 'There are no users in this site' ) );
     410                        return;
     411                }
     412
     413                if ( 'excerpt' === $mode) {
     414
     415                        $blog_users = get_users( array(
     416                                'blog_id' => $blog['blog_id'],
     417                                'orderby' => 'registered',
     418                                'fields' => array('ID', 'user_login'),
     419                                'number' => 10,
     420                        ));
     421
     422                        foreach ( $blog_users as $key => $user )
     423                        {
     424                                if ( 0 !== $key ) {
     425                                        echo '</br>';
     426                                }
     427
     428                                printf(
     429                                        '<a href="%s">%s</a>',
     430                                        esc_url( network_admin_url( 'user-edit.php?user_id=' . $user->ID ) ),
     431                                        $user->user_login
     432                                );
     433                        }
     434
     435
     436                } else {
     437                        $blog_users = get_users( array(
     438                                'blog_id' => $blog['blog_id'],
     439                                'orderby' => 'registered',
     440                                'fields' => array('ID', 'user_login'),
     441                                'number' => 1,
     442                        ));
     443
     444                        printf(
     445                                '<a href="%s">%s</a>',
     446                                esc_url( network_admin_url( 'user-edit.php?user_id=' . $blog_users[0]->ID ) ),
     447                                $blog_users[0]->user_login
     448                        );
     449
     450                }
     451
     452                if ( $user_count > 1 ) {
     453                        printf( '</br><a href="%s">%s</a>',
     454                                esc_url( network_admin_url( 'site-users.php?id=' . $blog['blog_id'] ) ),
     455                                sprintf(
     456                                        _x( '+ %s more users', 'Number of users of a site of a network (in admin page : wp-admin/network/sites.php)' ),
     457                                        number_format_i18n( $user_count - count( $blog_users ) )
     458                                )
     459                        );
     460                }
     461
     462                unset( $blog_users );
    409463        }
    410464
    411465        /**