11<?php
22
3+ use WP_CLI \Formatter ;
4+
35/**
46 * Adds, removes, and lists capabilities of a user role.
57 *
2123 */
2224class Capabilities_Command extends WP_CLI_Command {
2325
24- private $ fields = array (
25- 'name '
26- );
26+ /**
27+ * List of available fields.
28+ *
29+ * @var array
30+ */
31+ private $ fields = [ 'name ' ];
2732
2833 /**
2934 * Lists capabilities for a given role.
@@ -45,7 +50,7 @@ class Capabilities_Command extends WP_CLI_Command {
4550 * - count
4651 * - yaml
4752 * ---
48- *
53+ *
4954 * [--show-grant]
5055 * : Display all capabilities defined for a role including grant.
5156 * ---
@@ -66,39 +71,36 @@ class Capabilities_Command extends WP_CLI_Command {
6671 */
6772 public function list_ ( $ args , $ assoc_args ) {
6873 $ role_obj = self ::get_role ( $ args [0 ] );
69-
74+
7075 $ show_grant = ! empty ( $ assoc_args ['show-grant ' ] );
7176
7277 if ( $ show_grant ) {
7378 array_push ( $ this ->fields , 'grant ' );
7479 $ capabilities = $ role_obj ->capabilities ;
75- }
76- else {
80+ } else {
7781 $ capabilities = array_filter ( $ role_obj ->capabilities );
7882 }
79-
83+
8084 $ output_caps = array ();
8185 foreach ( $ capabilities as $ cap => $ grant ) {
82- $ output_cap = new StdClass ;
86+ $ output_cap = new stdClass ();
87+
88+ $ output_cap ->name = $ cap ;
89+ $ output_cap ->grant = $ grant ? 'true ' : 'false ' ;
8390
84- $ output_cap ->name = $ cap ;
85- $ output_cap ->grant = ( $ grant ) ? 'true ' : 'false ' ;
86-
8791 $ output_caps [] = $ output_cap ;
8892 }
8993
9094 if ( 'list ' === $ assoc_args ['format ' ] ) {
9195 foreach ( $ output_caps as $ cap ) {
9296 if ( $ show_grant ) {
9397 WP_CLI ::line ( implode ( ', ' , array ( $ cap ->name , $ cap ->grant ) ) );
94- }
95- else {
98+ } else {
9699 WP_CLI ::line ( $ cap ->name );
97100 }
98101 }
99- }
100- else {
101- $ formatter = new \WP_CLI \Formatter ( $ assoc_args , $ this ->fields );
102+ } else {
103+ $ formatter = new Formatter ( $ assoc_args , $ this ->fields );
102104 $ formatter ->display_items ( $ output_caps );
103105 }
104106 }
@@ -113,7 +115,7 @@ public function list_( $args, $assoc_args ) {
113115 *
114116 * <cap>...
115117 * : One or more capabilities to add.
116- *
118+ *
117119 * [--grant]
118120 * : Adds the capability as an explicit boolean value, instead of implicitly defaulting to `true`.
119121 * ---
@@ -141,23 +143,23 @@ public function add( $args, $assoc_args ) {
141143 $ count = 0 ;
142144
143145 foreach ( $ args as $ cap ) {
144- if ( true === $ grant && $ role_obj ->has_cap ( $ cap ) )
146+ if ( true === $ grant && $ role_obj ->has_cap ( $ cap ) ) {
145147 continue ;
148+ }
146149
147- if ( false === $ grant && isset ( $ role_obj ->capabilities [ $ cap ] ) && false === $ role_obj ->capabilities [ $ cap ] )
150+ if ( false === $ grant && isset ( $ role_obj ->capabilities [ $ cap ] ) && false === $ role_obj ->capabilities [ $ cap ] ) {
148151 continue ;
152+ }
149153
150154 $ role_obj ->add_cap ( $ cap , $ grant );
151155
152156 $ count ++;
153157 }
154158
155- if ( $ grant ) {
156- $ message = ( 1 === $ count ) ? "Added %d capability to '%s' role. " : "Added %d capabilities to '%s' role. " ;
157- } else {
158- $ message = ( 1 === $ count ) ? "Added %d capability to '%s' role as false. " : "Added %d capabilities to '%s' role as false. " ;
159- }
160- WP_CLI ::success ( sprintf ( $ message , $ count , $ role ) );
159+ $ capability = WP_CLI \Utils \pluralize ( 'capability ' , $ count );
160+ $ grant_qualification = $ grant ? '' : ' as false ' ;
161+
162+ WP_CLI ::success ( "Added {$ count } {$ capability } to ' {$ role }' role {$ grant_qualification }. " );
161163 }
162164
163165 /**
@@ -187,33 +189,50 @@ public function remove( $args ) {
187189 $ count = 0 ;
188190
189191 foreach ( $ args as $ cap ) {
190- if ( ! isset ( $ role_obj ->capabilities [ $ cap ] ) )
192+ if ( ! isset ( $ role_obj ->capabilities [ $ cap ] ) ) {
191193 continue ;
194+ }
192195
193196 $ role_obj ->remove_cap ( $ cap );
194197
195198 $ count ++;
196199 }
197200
198- $ message = ( 1 === $ count ) ? "Removed %d capability from '%s' role. " : "Removed %d capabilities from '%s' role. " ;
199- WP_CLI ::success ( sprintf ( $ message , $ count , $ role ) );
201+ $ capability = WP_CLI \Utils \pluralize ( 'capability ' , $ count );
202+
203+ WP_CLI ::success ( "Removed {$ count } {$ capability } from ' {$ role }' role. " );
200204 }
201205
206+ /**
207+ * Retrieve a specific role from the system.
208+ *
209+ * @param string $role Role to retrieve.
210+ * @return WP_Role Requested role.
211+ * @throws \WP_CLI\ExitException If the role could not be found.
212+ */
202213 private static function get_role ( $ role ) {
203214 global $ wp_roles ;
204215
205216 $ role_obj = $ wp_roles ->get_role ( $ role );
206217
207- if ( !$ role_obj )
208- WP_CLI ::error ( "' $ role' role not found. " );
218+ if ( ! $ role_obj ) {
219+ WP_CLI ::error ( "' {$ role }' role not found. " );
220+ }
209221
210222 return $ role_obj ;
211223 }
212224
225+ /**
226+ * Assert that the roles are persisted to the database.
227+ *
228+ * @throws \WP_CLI\ExitException If the roles are not persisted to the
229+ * database.
230+ */
213231 private static function persistence_check () {
214232 global $ wp_roles ;
215233
216- if ( !$ wp_roles ->use_db )
217- WP_CLI ::error ( "Role definitions are not persistent. " );
234+ if ( ! $ wp_roles ->use_db ) {
235+ WP_CLI ::error ( 'Role definitions are not persistent. ' );
236+ }
218237 }
219238}
0 commit comments