Ticket #22959: 22959.3.diff
File 22959.3.diff, 4.2 KB (added by , 12 years ago) |
---|
-
wp-admin/includes/class-wp-users-list-table.php
193 193 if ( ! $this->is_site_users ) 194 194 $post_counts = count_many_users_posts( array_keys( $this->items ) ); 195 195 196 $editable_roles = array_keys( get_editable_roles() );197 198 196 $style = ''; 199 197 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 }207 198 208 199 if ( is_multisite() && empty( $user_object->allcaps ) ) 209 200 continue; 210 201 211 202 $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 ); 213 204 } 214 205 } 215 206 … … 220 211 * 221 212 * @param object $user_object 222 213 * @param string $style Optional. Attributes added to the TR element. Must be sanitized. 223 * @param string $role Key for the $wp_roles array.224 214 * @param int $numposts Optional. Post count to display for this user. Defaults to zero, as in, a new user has made zero posts. 225 215 * @return string 226 216 */ 227 function single_row( $user_object, $style = '', $role = '', $numposts = 0 ) { 228 global $wp_roles; 217 function single_row( $user_object, $style = '', $numposts = 0 ) { 229 218 230 219 if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) ) 231 220 $user_object = get_userdata( (int) $user_object ); … … 237 226 else 238 227 $url = 'users.php?'; 239 228 229 $roles_list = $this->get_role_list( $user_object ); 230 240 231 $checkbox = ''; 241 232 // Check if the user for this row is editable 242 233 if ( current_user_can( 'list_users' ) ) { … … 260 251 $actions = apply_filters( 'user_row_actions', $actions, $user_object ); 261 252 $edit .= $this->row_actions( $actions ); 262 253 254 $role_classes = esc_attr( strtolower( str_replace( ', ', ' ', $roles_list ) ) ); 255 263 256 // Set up the checkbox ( because the user is editable, otherwise it's empty ) 264 257 $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}' />"; 266 259 267 260 } else { 268 261 $edit = '<strong>' . $user_object->user_login . '</strong>'; 269 262 } 270 $role_name = isset( $wp_roles->role_names[$role] ) ? translate_user_role( $wp_roles->role_names[$role] ) : __( 'None' ); 263 271 264 $avatar = get_avatar( $user_object->ID, 32 ); 272 265 273 266 $r = "<tr id='user-$user_object->ID'$style>"; … … 297 290 $r .= "<td $attributes><a href='mailto:$email' title='" . esc_attr( sprintf( __( 'E-mail: %s' ), $email ) ) . "'>$email</a></td>"; 298 291 break; 299 292 case 'role': 300 $r .= "<td $attributes> $role_name</td>";293 $r .= "<td $attributes>" . $roles_list . "</td>"; 301 294 break; 302 295 case 'posts': 303 296 $attributes = 'class="posts column-posts num"' . $style; … … 321 314 322 315 return $r; 323 316 } 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 } 324 344 }