Skip to content

Commit 990a3ff

Browse files
committed
Ensure all logins come with IDs
1 parent 0d7c473 commit 990a3ff

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Super_Admin_Command.php

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ public function remove( $args, $_ ) {
166166
}
167167

168168
$users = $this->fetcher->get_many( $args );
169-
$user_logins = $users ? array_values( array_unique( wp_list_pluck( $users, 'user_login' ) ) ) : array();
169+
$user_logins = $users ? array_values( array_unique( wp_list_pluck( $users, 'user_login' ) ) ) : [];
170170
$user_logins_count = count( $user_logins );
171171

172172
$user_ids = [];
@@ -185,7 +185,7 @@ public function remove( $args, $_ ) {
185185
array_unique(
186186
array_filter(
187187
$args,
188-
function ( $v ) use ( $flipped_user_logins ) {
188+
static function ( $v ) use ( $flipped_user_logins ) {
189189
// Exclude numeric and email-like logins (login names can be email-like but ignore this given the circumstances).
190190
return ! isset( $flipped_user_logins[ $v ] ) && ! is_numeric( $v ) && ! is_email( $v );
191191
}
@@ -198,6 +198,14 @@ function ( $v ) use ( $flipped_user_logins ) {
198198
WP_CLI::error( 'No valid user logins given to revoke super-admin privileges from.' );
199199
}
200200

201+
// Ensure we always have an ID for all logins.
202+
foreach( $user_logins as $user_login ) {
203+
if ( ! array_key_exists( $user_login, $user_ids ) ) {
204+
$user = get_user_by( 'login', $user_login );
205+
$user_ids[ $user_login ] = $user->ID;
206+
}
207+
}
208+
201209
$update_super_admins = array_diff( $super_admins, $user_logins );
202210
if ( $update_super_admins === $super_admins ) {
203211
WP_CLI::error( $user_logins_count > 1 ? 'None of the given users is a super admin.' : 'The given user is not a super admin.' );

0 commit comments

Comments
 (0)