Make WordPress Core

Ticket #22959: 22959.3.diff

File 22959.3.diff, 4.2 KB (added by DrewAPicture, 11 years ago)
  • wp-admin/includes/class-wp-users-list-table.php

     
    193193                if ( ! $this->is_site_users )
    194194                        $post_counts = count_many_users_posts( array_keys( $this->items ) );
    195195
    196                 $editable_roles = array_keys( get_editable_roles() );
    197 
    198196                $style = '';
    199197                foreach ( $this->items as $userid => $user_object ) {
    200                         if ( count( $user_object->roles ) <= 1 ) {
    201                                 $role = reset( $user_object->roles );
    202                         } elseif ( $roles = array_intersect( array_values( $user_object->roles ), $editable_roles ) ) {
    203                                 $role = reset( $roles );
    204                         } else {
    205                                 $role = reset( $user_object->roles );
    206                         }
    207198
    208199                        if ( is_multisite() && empty( $user_object->allcaps ) )
    209200                                continue;
    210201
    211202                        $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"';
    212                         echo "\n\t" . $this->single_row( $user_object, $style, $role, isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
     203                        echo "\n\t" . $this->single_row( $user_object, $style, isset( $post_counts ) ? $post_counts[ $userid ] : 0 );
    213204                }
    214205        }
    215206
     
    220211         *
    221212         * @param object $user_object
    222213         * @param string $style Optional. Attributes added to the TR element. Must be sanitized.
    223          * @param string $role Key for the $wp_roles array.
    224214         * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts.
    225215         * @return string
    226216         */
    227         function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) {
    228                 global $wp_roles;
     217        function single_row( $user_object, $style = '', $numposts = 0 ) {
    229218
    230219                if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) )
    231220                        $user_object = get_userdata( (int) $user_object );
     
    237226                else
    238227                        $url = 'users.php?';
    239228
     229                $roles_list = $this->get_role_list( $user_object );
     230
    240231                $checkbox = '';
    241232                // Check if the user for this row is editable
    242233                if ( current_user_can( 'list_users' ) ) {
     
    260251                        $actions = apply_filters( 'user_row_actions', $actions, $user_object );
    261252                        $edit .= $this->row_actions( $actions );
    262253
     254                        $role_classes = esc_attr( strtolower( str_replace( ', ', ' ', $roles_list ) ) );
     255
    263256                        // Set up the checkbox ( because the user is editable, otherwise it's empty )
    264257                        $checkbox = '<label class="screen-reader-text" for="cb-select-' . $user_object->ID . '">' . sprintf( __( 'Select %s' ), $user_object->user_login ) . '</label>'
    265                                                 . "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role' value='{$user_object->ID}' />";
     258                                                . "<input type='checkbox' name='users[]' id='user_{$user_object->ID}' class='$role_classes' value='{$user_object->ID}' />";
    266259
    267260                } else {
    268261                        $edit = '<strong>' . $user_object->user_login . '</strong>';
    269262                }
    270                 $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' );
     263
    271264                $avatar = get_avatar( $user_object->ID, 32 );
    272265
    273266                $r = "<tr id='user-$user_object->ID'$style>";
     
    297290                                        $r .= "<td $attributes><a href='mailto:$email' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>";
    298291                                        break;
    299292                                case 'role':
    300                                         $r .= "<td $attributes>$role_name</td>";
     293                                        $r .= "<td $attributes>" . $roles_list . "</td>";
    301294                                        break;
    302295                                case 'posts':
    303296                                        $attributes = 'class="posts column-posts num"' . $style;
     
    321314
    322315                return $r;
    323316        }
     317
     318        /**
     319         * Generate a comma-delimited list of user roles for a given user object.
     320         *
     321         * @since 3.7.0
     322         *
     323         * @uses apply_filters() Calls 'get_role_list' on $role_list and $user_object.
     324         *
     325         * @param object $user_object The user object.
     326         * @return string A comma-delimited list of user roles.
     327         */
     328        private function get_role_list( $user_object ) {
     329                global $wp_roles;
     330
     331                $role_list = array();
     332
     333                foreach ( $user_object->roles as $role ) {
     334                        if ( isset( $wp_roles->role_names[ $role ] ) ) {
     335                                $role_list[] = translate_user_role( $wp_roles->role_names[ $role ] );
     336                        }
     337                }
     338
     339                if ( empty( $role_list ) )
     340                        $role_list = _x( 'None', 'no roles' );
     341
     342                return implode( ', ', apply_filters( 'get_role_list', $role_list, $user_object ) );
     343        }
    324344}