diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-admin/users.php --- a/wp/wp-admin/users.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-admin/users.php Fri Sep 05 18:40:08 2025 +0200 @@ -33,7 +33,7 @@ 'id' => 'overview', 'title' => __( 'Overview' ), 'content' => '
' . __( 'This screen lists all the existing users for your site. Each user has one of five defined roles as set by the site admin: Site Administrator, Editor, Author, Contributor, or Subscriber. Users with roles other than Administrator will see fewer options in the dashboard navigation when they are logged in, based on their role.' ) . '
' . - '' . __( 'To add a new user for your site, click the Add New button at the top of the screen or Add New in the Users menu section.' ) . '
', + '' . __( 'To add a new user for your site, click the Add New User button at the top of the screen or Add New User in the Users menu section.' ) . '
', ) ); @@ -60,6 +60,12 @@ $help .= '' . __( 'For more information:' ) . '
' . - '' . __( 'Documentation on Managing Users' ) . '
' . - '' . __( 'Descriptions of Roles and Capabilities' ) . '
' . - '' . __( 'Support' ) . '
' + '' . __( 'Documentation on Managing Users' ) . '
' . + '' . __( 'Descriptions of Roles and Capabilities' ) . '
' . + '' . __( 'Support forums' ) . '
' ); get_current_screen()->set_screen_reader_content( @@ -129,18 +135,19 @@ $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; } @@ -173,10 +180,10 @@ 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; @@ -189,15 +196,16 @@ $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 ); @@ -206,6 +214,7 @@ wp_delete_user( $id, $_REQUEST['reassign_user'] ); break; } + ++$delete_count; } @@ -221,18 +230,21 @@ 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.' ) ); } @@ -244,7 +256,7 @@ // Send the password reset link. $user = get_userdata( $id ); - if ( retrieve_password( $user->user_login ) ) { + if ( true === retrieve_password( $user->user_login ) ) { ++$reset_count; } } @@ -276,15 +288,15 @@ } 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 ) ); } /** @@ -294,14 +306,22 @@ * @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; } } @@ -312,88 +332,124 @@ require_once ABSPATH . 'wp-admin/admin-header.php'; ?> - - 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; @@ -516,6 +595,7 @@ $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; @@ -529,21 +609,28 @@ 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. */ $message = _n( '%s user deleted.', '%s users deleted.', $delete_count ); } - $messages[] = '' . sprintf( $message, number_format_i18n( $delete_count ) ) . '
' . $message . '
' . sprintf( $message, number_format_i18n( $reset_count ) ) . '
' . __( 'Changed roles.' ) . '
' . __( 'The current user’s role must have user editing capabilities.' ) . '
' . __( 'Other user roles have been changed.' ) . '
' . __( 'You cannot delete the current user.' ) . '
' . __( 'Other users have been deleted.' ) . '
' . __( 'User removed from this site.' ) . '
' . __( 'You cannot remove the current user.' ) . '
' . __( 'Other users have been removed.' ) . '