X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/80b7979fccf09a75af3f4c111fa27060ae6dbf85..80e421fa26a0ef412d7c67749a64a6c1919d515a:/wp-admin/includes/class-wp-users-list-table.php diff --git a/wp-admin/includes/class-wp-users-list-table.php b/wp-admin/includes/class-wp-users-list-table.php index adb83214..9ad3c13a 100644 --- a/wp-admin/includes/class-wp-users-list-table.php +++ b/wp-admin/includes/class-wp-users-list-table.php @@ -12,17 +12,17 @@ class WP_Users_List_Table extends WP_List_Table { var $site_id; var $is_site_users; - function __construct() { - $screen = get_current_screen(); - $this->is_site_users = 'site-users-network' == $screen->id; - - if ( $this->is_site_users ) - $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; - + function __construct( $args = array() ) { parent::__construct( array( 'singular' => 'user', - 'plural' => 'users' + 'plural' => 'users', + 'screen' => isset( $args['screen'] ) ? $args['screen'] : null, ) ); + + $this->is_site_users = 'site-users-network' == $this->screen->id; + + if ( $this->is_site_users ) + $this->site_id = isset( $_REQUEST['id'] ) ? intval( $_REQUEST['id'] ) : 0; } function ajax_user_can() { @@ -35,7 +35,7 @@ class WP_Users_List_Table extends WP_List_Table { function prepare_items() { global $role, $usersearch; - $usersearch = isset( $_REQUEST['s'] ) ? $_REQUEST['s'] : ''; + $usersearch = isset( $_REQUEST['s'] ) ? trim( $_REQUEST['s'] ) : ''; $role = isset( $_REQUEST['role'] ) ? $_REQUEST['role'] : ''; @@ -136,18 +136,20 @@ class WP_Users_List_Table extends WP_List_Table { function extra_tablenav( $which ) { if ( 'top' != $which ) return; - if ( ! current_user_can( 'promote_users' ) ) - return; -?> + ?>
+ - -
-'; } function current_action() { @@ -191,11 +193,19 @@ class WP_Users_List_Table extends WP_List_Table { if ( ! $this->is_site_users ) $post_counts = count_many_users_posts( array_keys( $this->items ) ); + $editable_roles = array_keys( get_editable_roles() ); + $style = ''; foreach ( $this->items as $userid => $user_object ) { - $role = reset( $user_object->roles ); + if ( count( $user_object->roles ) <= 1 ) { + $role = reset( $user_object->roles ); + } elseif ( $roles = array_intersect( array_values( $user_object->roles ), $editable_roles ) ) { + $role = reset( $roles ); + } else { + $role = reset( $user_object->roles ); + } - if ( is_multisite() && empty( $role ) ) + if ( is_multisite() && empty( $user_object->allcaps ) ) continue; $style = ( ' class="alternate"' == $style ) ? '' : ' class="alternate"'; @@ -218,7 +228,7 @@ class WP_Users_List_Table extends WP_List_Table { global $wp_roles; if ( !( is_object( $user_object ) && is_a( $user_object, 'WP_User' ) ) ) - $user_object = new WP_User( (int) $user_object ); + $user_object = get_userdata( (int) $user_object ); $user_object->filter = 'display'; $email = $user_object->user_email; @@ -231,12 +241,7 @@ class WP_Users_List_Table extends WP_List_Table { // Check if the user for this row is editable if ( current_user_can( 'list_users' ) ) { // Set up the user editing link - // TODO: make profile/user-edit determination a separate function - if ( get_current_user_id() == $user_object->ID ) { - $edit_link = 'profile.php'; - } else { - $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), "user-edit.php?user_id=$user_object->ID" ) ); - } + $edit_link = esc_url( add_query_arg( 'wp_http_referer', urlencode( stripslashes( $_SERVER['REQUEST_URI'] ) ), get_edit_user_link( $user_object->ID ) ) ); // Set up the hover actions for this user $actions = array(); @@ -256,7 +261,8 @@ class WP_Users_List_Table extends WP_List_Table { $edit .= $this->row_actions( $actions ); // Set up the checkbox ( because the user is editable, otherwise its empty ) - $checkbox = ""; + $checkbox = '' + . ""; } else { $edit = '' . $user_object->user_login . '';