@@ -42,14 +42,14 @@ class Role_Command extends WP_CLI_Command {
4242 /**
4343 * List of available fields.
4444 *
45- * @var array
45+ * @var array<string>
4646 */
4747 private $ fields = [ 'name ' , 'role ' ];
4848
4949 /**
5050 * Default roles as provided by WordPress Core.
5151 *
52- * @var array
52+ * @var array<string>
5353 */
5454 private $ roles = [ 'administrator ' , 'editor ' , 'author ' , 'contributor ' , 'subscriber ' ];
5555
@@ -347,13 +347,17 @@ public function reset( $args, $assoc_args ) {
347347 remove_role ( $ role );
348348 }
349349
350+ /**
351+ * @var array<string|\WP_Role> $preserve
352+ */
353+
350354 // Put back all default roles and capabilities.
351355 populate_roles ();
352356
353357 // Restore the preserved roles.
354358 foreach ( $ preserve as $ k => $ roleobj ) {
355359 // Re-remove after populating.
356- if ( is_a ( $ roleobj, ' WP_Role ' ) ) {
360+ if ( $ roleobj instanceof \WP_Role ) {
357361 remove_role ( $ roleobj ->name );
358362 add_role ( $ roleobj ->name , ucwords ( $ roleobj ->name ), $ roleobj ->capabilities );
359363 } else {
@@ -373,13 +377,15 @@ public function reset( $args, $assoc_args ) {
373377 if ( $ after [ $ role_key ] != $ before [ $ role_key ] ) {
374378 ++$ num_reset ;
375379 $ before_capabilities = isset ( $ before [ $ role_key ] ) ? $ before [ $ role_key ]->capabilities : [];
376- $ restored_cap = array_diff_key ( $ after [ $ role_key ]->capabilities , $ before_capabilities );
377- $ removed_cap = array_diff_key ( $ before_capabilities , $ after [ $ role_key ]->capabilities );
378- $ restored_cap_count = count ( $ restored_cap );
379- $ removed_cap_count = count ( $ removed_cap );
380- $ restored_text = ( 1 === $ restored_cap_count ) ? '%d capability ' : '%d capabilities ' ;
381- $ removed_text = ( 1 === $ removed_cap_count ) ? '%d capability ' : '%d capabilities ' ;
382- $ message = "Restored {$ restored_text } to and removed {$ removed_text } from '%s' role. " ;
380+ // @phpstan-ignore property.nonObject
381+ $ restored_cap = array_diff_key ( $ after [ $ role_key ]->capabilities , $ before_capabilities );
382+ // @phpstan-ignore property.nonObject
383+ $ removed_cap = array_diff_key ( $ before_capabilities , $ after [ $ role_key ]->capabilities );
384+ $ restored_cap_count = count ( $ restored_cap );
385+ $ removed_cap_count = count ( $ removed_cap );
386+ $ restored_text = ( 1 === $ restored_cap_count ) ? '%d capability ' : '%d capabilities ' ;
387+ $ removed_text = ( 1 === $ removed_cap_count ) ? '%d capability ' : '%d capabilities ' ;
388+ $ message = "Restored {$ restored_text } to and removed {$ removed_text } from '%s' role. " ;
383389 WP_CLI ::log ( sprintf ( $ message , $ restored_cap_count , $ removed_cap_count , $ role_key ) );
384390 } else {
385391 WP_CLI ::log ( "No changes necessary for ' {$ role_key }' role. " );
0 commit comments