user_groups = $user_groups; $this->default_fields = [ 'id', 'label', 'users', 'roles', 'canonical', ]; } /** * List User Groups. * * ## OPTIONS * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * - ids * - count * * @subcommand list */ public function list_( $args, $assoc_args ) { $user_groups = $this->user_groups->all(); $format = get_flag_value( $assoc_args, 'format', 'table' ); if ( 'count' === $format ) { WP_CLI::log( count( $user_groups ) ); } elseif ( 'ids' === $format ) { WP_CLI::log( implode( ' ', array_map( static function ( User_Group $user_group ) { return $user_group->get_id(); }, $user_groups ) ) ); } else { $assoc_args = wp_parse_args( $assoc_args, [ 'fields' => $this->default_fields, ] ); $formatter = new Formatter( $assoc_args ); $formatter->display_items( array_map( [ $this, 'format_user_group' ], $user_groups ) ); } } /** * Get a user group. * * ## OPTIONS * * * : The id of the user group. * * [--field=] * : Instead of returning the whole user group, returns the value of a single field. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml */ public function get( $args, $assoc_args ) { list( $uuid ) = $args; try { $user_group = $this->user_groups->get( $uuid ); } catch ( User_Groups\Repository\User_Group_Not_Found $e ) { WP_CLI::error( $e->getMessage() ); } $formatter = new Formatter( $assoc_args, $this->default_fields ); $formatter->display_item( $this->format_user_group( $user_group ) ); } /** * Get a user group. * * ## OPTIONS * * ... * : One or more of the user group ids. */ public function delete( $args, $assoc_args ) { $status = 0; foreach ( $args as $id ) { try { $user_group = $this->user_groups->get( $id ); $this->user_groups->delete( $user_group ); WP_CLI::success( sprintf( 'Deleted group %s.', $id ) ); } catch ( User_Groups\Repository\User_Group_Not_Found $e ) { // treat the group already not existing as a success } catch ( \Exception $e ) { $status = 1; WP_CLI::warning( sprintf( 'Could not delete user group %s. Error: %s.', $id, $e->getMessage() ) ); } } WP_CLI::halt( $status ); } /** * Create a user group. * * ## OPTIONS * *