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'; ?> -
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'; ?> - 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() ) { ?> -