--- a/wp/wp-admin/users.php Tue Dec 15 15:52:01 2020 +0100
+++ b/wp/wp-admin/users.php Wed Sep 21 18:19:35 2022 +0200
@@ -112,17 +112,21 @@
}
$editable_roles = get_editable_roles();
- $role = false;
- if ( ! empty( $_REQUEST['new_role2'] ) ) {
- $role = $_REQUEST['new_role2'];
- } elseif ( ! empty( $_REQUEST['new_role'] ) ) {
- $role = $_REQUEST['new_role'];
- }
+ $role = $_REQUEST['new_role'];
+
+ // Mocking the `none` role so we are able to save it to the database
+ $editable_roles['none'] = array(
+ 'name' => __( '— No role for this site —' ),
+ );
if ( ! $role || empty( $editable_roles[ $role ] ) ) {
wp_die( __( 'Sorry, you are not allowed to give users that role.' ), 403 );
}
+ if ( 'none' === $role ) {
+ $role = '';
+ }
+
$userids = $_REQUEST['users'];
$update = 'promote';
foreach ( $userids as $id ) {
@@ -213,6 +217,46 @@
wp_redirect( $redirect );
exit;
+ 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'] );
+
+ $reset_count = 0;
+
+ foreach ( $userids as $id ) {
+ if ( ! current_user_can( 'edit_user', $id ) ) {
+ wp_die( __( 'Sorry, you are not allowed to edit this user.' ) );
+ }
+
+ if ( $id === $current_user->ID ) {
+ $update = 'err_admin_reset';
+ continue;
+ }
+
+ // Send the password reset link.
+ $user = get_userdata( $id );
+ if ( retrieve_password( $user->user_login ) ) {
+ ++$reset_count;
+ }
+ }
+
+ $redirect = add_query_arg(
+ array(
+ 'reset_count' => $reset_count,
+ 'update' => 'resetpassword',
+ ),
+ $redirect
+ );
+ wp_redirect( $redirect );
+ exit;
+
case 'delete':
if ( is_multisite() ) {
wp_die( __( 'User deletion is not allowed from this screen.' ), 400 );
@@ -230,7 +274,7 @@
}
if ( empty( $_REQUEST['users'] ) ) {
- $userids = array( intval( $_REQUEST['user'] ) );
+ $userids = array( (int) $_REQUEST['user'] );
} else {
$userids = array_map( 'intval', (array) $_REQUEST['users'] );
}
@@ -401,7 +445,7 @@
}
if ( empty( $_REQUEST['users'] ) ) {
- $userids = array( intval( $_REQUEST['user'] ) );
+ $userids = array( (int) $_REQUEST['user'] );
} else {
$userids = $_REQUEST['users'];
}
@@ -511,6 +555,16 @@
$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . $message . '</p></div>';
break;
+ case 'resetpassword':
+ $reset_count = isset( $_GET['reset_count'] ) ? (int) $_GET['reset_count'] : 0;
+ if ( 1 === $reset_count ) {
+ $message = __( 'Password reset link sent.' );
+ } else {
+ /* translators: %s: Number of users. */
+ $message = _n( 'Password reset links sent to %s user.', 'Password reset links sent to %s users.', $reset_count );
+ }
+ $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf( $message, number_format_i18n( $reset_count ) ) . '</p></div>';
+ break;
case 'promote':
$messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . __( 'Changed roles.' ) . '</p></div>';
break;
@@ -563,15 +617,20 @@
<?php
if ( current_user_can( 'create_users' ) ) {
?>
- <a href="<?php echo admin_url( 'user-new.php' ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
+ <a href="<?php echo esc_url( admin_url( 'user-new.php' ) ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add New', 'user' ); ?></a>
<?php } elseif ( is_multisite() && current_user_can( 'promote_users' ) ) { ?>
- <a href="<?php echo admin_url( 'user-new.php' ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
+ <a href="<?php echo esc_url( admin_url( 'user-new.php' ) ); ?>" class="page-title-action"><?php echo esc_html_x( 'Add Existing', 'user' ); ?></a>
<?php
}
if ( strlen( $usersearch ) ) {
- /* translators: %s: Search query. */
- printf( '<span class="subtitle">' . __( 'Search results for “%s”' ) . '</span>', esc_html( $usersearch ) );
+ echo '<span class="subtitle">';
+ printf(
+ /* translators: %s: Search query. */
+ __( 'Search results for: %s' ),
+ '<strong>' . esc_html( $usersearch ) . '</strong>'
+ );
+ echo '</span>';
}
?>
@@ -590,7 +649,7 @@
<?php $wp_list_table->display(); ?>
</form>
-<br class="clear" />
+<div class="clear"></div>
</div>
<?php
break;