diff --git a/wp-admin/users.php b/wp-admin/users.php index 8e5312c3b1..2c635c543a 100644 --- a/wp-admin/users.php +++ b/wp-admin/users.php @@ -135,18 +135,19 @@ switch ( $wp_list_table->current_action() ) { $role = ''; } - $userids = $_REQUEST['users']; - $update = 'promote'; - foreach ( $userids as $id ) { - $id = (int) $id; + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); + $update = 'promote'; + foreach ( $user_ids as $id ) { if ( ! current_user_can( 'promote_user', $id ) ) { wp_die( __( 'Sorry, you are not allowed to edit this user.' ), 403 ); } // The new role of the current user must also have the promote_users cap or be a multisite super admin. - if ( $id === $current_user->ID && ! $wp_roles->role_objects[ $role ]->has_cap( 'promote_users' ) - && ! ( is_multisite() && current_user_can( 'manage_network_users' ) ) ) { + if ( $id === $current_user->ID + && ! $wp_roles->role_objects[ $role ]->has_cap( 'promote_users' ) + && ! ( is_multisite() && current_user_can( 'manage_network_users' ) ) + ) { $update = 'err_admin_role'; continue; } @@ -179,10 +180,10 @@ switch ( $wp_list_table->current_action() ) { exit; } - $userids = array_map( 'intval', (array) $_REQUEST['users'] ); + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); if ( empty( $_REQUEST['delete_option'] ) ) { - $url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $userids ) . '&error=true' ); + $url = self_admin_url( 'users.php?action=delete&users[]=' . implode( '&users[]=', $user_ids ) . '&error=true' ); $url = str_replace( '&', '&', wp_nonce_url( $url, 'bulk-users' ) ); wp_redirect( $url ); exit; @@ -195,15 +196,16 @@ switch ( $wp_list_table->current_action() ) { $update = 'del'; $delete_count = 0; - foreach ( $userids as $id ) { + foreach ( $user_ids as $id ) { if ( ! current_user_can( 'delete_user', $id ) ) { wp_die( __( 'Sorry, you are not allowed to delete that user.' ), 403 ); } - if ( $id == $current_user->ID ) { + if ( $id === $current_user->ID ) { $update = 'err_admin_del'; continue; } + switch ( $_REQUEST['delete_option'] ) { case 'delete': wp_delete_user( $id ); @@ -212,6 +214,7 @@ switch ( $wp_list_table->current_action() ) { wp_delete_user( $id, $_REQUEST['reassign_user'] ); break; } + ++$delete_count; } @@ -227,18 +230,21 @@ switch ( $wp_list_table->current_action() ) { case 'resetpassword': check_admin_referer( 'bulk-users' ); + if ( ! current_user_can( 'edit_users' ) ) { $errors = new WP_Error( 'edit_users', __( 'Sorry, you are not allowed to edit users.' ) ); } + if ( empty( $_REQUEST['users'] ) ) { wp_redirect( $redirect ); exit(); } - $userids = array_map( 'intval', (array) $_REQUEST['users'] ); + + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); $reset_count = 0; - foreach ( $userids as $id ) { + foreach ( $user_ids as $id ) { if ( ! current_user_can( 'edit_user', $id ) ) { wp_die( __( 'Sorry, you are not allowed to edit this user.' ) ); } @@ -282,15 +288,15 @@ switch ( $wp_list_table->current_action() ) { } if ( empty( $_REQUEST['users'] ) ) { - $userids = array( (int) $_REQUEST['user'] ); + $user_ids = array( (int) $_REQUEST['user'] ); } else { - $userids = array_map( 'intval', (array) $_REQUEST['users'] ); + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); } - $all_userids = $userids; + $all_user_ids = $user_ids; - if ( in_array( $current_user->ID, $userids, true ) ) { - $userids = array_diff( $userids, array( $current_user->ID ) ); + if ( in_array( $current_user->ID, $user_ids, true ) ) { + $user_ids = array_diff( $user_ids, array( $current_user->ID ) ); } /** @@ -300,14 +306,22 @@ switch ( $wp_list_table->current_action() ) { * @since 5.2.0 * * @param bool $users_have_additional_content Whether the users have additional content. Default false. - * @param int[] $userids Array of IDs for users being deleted. + * @param int[] $user_ids Array of IDs for users being deleted. */ - $users_have_content = (bool) apply_filters( 'users_have_additional_content', false, $userids ); + $users_have_content = (bool) apply_filters( 'users_have_additional_content', false, $user_ids ); - if ( $userids && ! $users_have_content ) { - if ( $wpdb->get_var( "SELECT ID FROM {$wpdb->posts} WHERE post_author IN( " . implode( ',', $userids ) . ' ) LIMIT 1' ) ) { + if ( $user_ids && ! $users_have_content ) { + if ( $wpdb->get_var( + "SELECT ID FROM {$wpdb->posts} + WHERE post_author IN( " . implode( ',', $user_ids ) . ' ) + LIMIT 1' + ) ) { $users_have_content = true; - } elseif ( $wpdb->get_var( "SELECT link_id FROM {$wpdb->links} WHERE link_owner IN( " . implode( ',', $userids ) . ' ) LIMIT 1' ) ) { + } elseif ( $wpdb->get_var( + "SELECT link_id FROM {$wpdb->links} + WHERE link_owner IN( " . implode( ',', $user_ids ) . ' ) + LIMIT 1' + ) ) { $users_have_content = true; } } @@ -318,88 +332,119 @@ switch ( $wp_list_table->current_action() ) { require_once ABSPATH . 'wp-admin/admin-header.php'; ?> -
+ -
-

+
+

+ -
-

-
+
+

+
- -

+ +

-

+

-
    +
      ID ) { - /* translators: 1: User ID, 2: User login. */ - echo '
    • ' . sprintf( __( 'ID #%1$s: %2$s The current user will not be deleted.' ), $id, $user->user_login ) . "
    • \n"; + + if ( $id === $current_user->ID ) { + echo '
    • '; + printf( + /* translators: 1: User ID, 2: User login. */ + __( 'ID #%1$s: %2$s The current user will not be deleted.' ), + $id, + $user->user_login + ); + echo "
    • \n"; } else { - /* translators: 1: User ID, 2: User login. */ - echo '
    • ' . sprintf( __( 'ID #%1$s: %2$s' ), $id, $user->user_login ) . "
    • \n"; + echo '
    • '; + printf( + '', + esc_attr( $id ) + ); + printf( + /* translators: 1: User ID, 2: User login. */ + __( 'ID #%1$s: %2$s' ), + $id, + $user->user_login + ); + echo "
    • \n"; + $go_delete++; } } ?> -
    +
+ - + +
-

- -

- -
    -
  • -
  • +

    + +

    + + +
      +
    • + + +
    • +
    • + + + 'reassign_user', + 'exclude' => $user_ids, + 'show' => 'display_name_with_login', + ) + ); + ?> +
    • +
    +
' . __( 'Attribute all content to:' ) . ' '; - wp_dropdown_users( - array( - 'name' => 'reassign_user', - 'exclude' => $userids, - 'show' => 'display_name_with_login', - ) - ); - ?> - -
- - + - -

- -
- + + + +

+ + +
+ current_action() ) { wp_die( __( 'Sorry, you are not allowed to remove users.' ), 403 ); } - $userids = $_REQUEST['users']; + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); + $update = 'remove'; - $update = 'remove'; - foreach ( $userids as $id ) { - $id = (int) $id; + foreach ( $user_ids as $id ) { if ( ! current_user_can( 'remove_user', $id ) ) { $update = 'err_admin_remove'; continue; } + remove_user_from_blog( $id, $blog_id ); } @@ -453,51 +498,74 @@ switch ( $wp_list_table->current_action() ) { } if ( empty( $_REQUEST['users'] ) ) { - $userids = array( (int) $_REQUEST['user'] ); + $user_ids = array( (int) $_REQUEST['user'] ); } else { - $userids = $_REQUEST['users']; + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); } require_once ABSPATH . 'wp-admin/admin-header.php'; ?> -
+ -
-

+
+

- -

+ +

-

+

-
    +
      ' . sprintf( __( 'ID #%1$s: %2$s Sorry, you are not allowed to remove this user.' ), $id, $user->user_login ) . "\n"; + echo '
    • '; + printf( + /* translators: 1: User ID, 2: User login. */ + __( 'ID #%1$s: %2$s Sorry, you are not allowed to remove this user.' ), + $id, + $user->user_login + ); + echo "
    • \n"; } else { - /* translators: 1: User ID, 2: User login. */ - echo "
    • " . sprintf( __( 'ID #%1$s: %2$s' ), $id, $user->user_login ) . "
    • \n"; + echo '
    • '; + printf( + '', + esc_attr( $id ) + ); + printf( + /* translators: 1: User ID, 2: User login. */ + __( 'ID #%1$s: %2$s' ), + $id, + $user->user_login + ); + echo "
    • \n"; + $go_remove = true; } } ?> -
    +
+ - + + - -

- -
- + + + +

+ + +
+ current_action() ) { if ( $wp_list_table->current_action() && ! empty( $_REQUEST['users'] ) ) { $screen = get_current_screen()->id; $sendback = wp_get_referer(); - $userids = $_REQUEST['users']; + $user_ids = array_map( 'intval', (array) $_REQUEST['users'] ); /** This action is documented in wp-admin/edit.php */ - $sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $wp_list_table->current_action(), $userids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores + $sendback = apply_filters( "handle_bulk_actions-{$screen}", $sendback, $wp_list_table->current_action(), $user_ids ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores wp_safe_redirect( $sendback ); exit; @@ -522,6 +590,7 @@ switch ( $wp_list_table->current_action() ) { $wp_list_table->prepare_items(); $total_pages = $wp_list_table->get_pagination_arg( 'total_pages' ); + if ( $pagenum > $total_pages && $total_pages > 0 ) { wp_redirect( add_query_arg( 'paged', $total_pages ) ); exit; @@ -535,7 +604,7 @@ switch ( $wp_list_table->current_action() ) { case 'del': case 'del_many': $delete_count = isset( $_GET['delete_count'] ) ? (int) $_GET['delete_count'] : 0; - if ( 1 == $delete_count ) { + if ( 1 === $delete_count ) { $message = __( 'User deleted.' ); } else { /* translators: %s: Number of users. */ @@ -549,7 +618,7 @@ switch ( $wp_list_table->current_action() ) { $user_id = isset( $_GET['id'] ) ? $_GET['id'] : false; if ( $user_id && current_user_can( 'edit_user', $user_id ) ) { $message .= sprintf( - ' %s', + ' %2$s', esc_url( add_query_arg( 'wp_http_referer', @@ -596,17 +665,17 @@ switch ( $wp_list_table->current_action() ) { ?> -
- -
- current_action() ) { } ?> -
-

- -

+
+

+ +

- - - - %2$s', + esc_url( admin_url( 'user-new.php' ) ), + esc_html_x( 'Add New', 'user' ) + ); + } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { + printf( + '%2$s', + esc_url( admin_url( 'user-new.php' ) ), + esc_html_x( 'Add Existing', 'user' ) + ); + } -if ( strlen( $usersearch ) ) { - echo ''; - printf( - /* translators: %s: Search query. */ - __( 'Search results for: %s' ), - '' . esc_html( $usersearch ) . '' - ); - echo ''; -} -?> + if ( strlen( $usersearch ) ) { + echo ''; + printf( + /* translators: %s: Search query. */ + __( 'Search results for: %s' ), + '' . esc_html( $usersearch ) . '' + ); + echo ''; + } + ?> -
+
views(); ?> -
+ search_box( __( 'Search Users' ), 'user' ); ?> - - + + display(); ?> -
-
-
+ + +
+