--- /dev/null
+<?php
+
+namespace WP_CLI;
+
+class FetcherUser implements Fetcher {
+
+ public function get( $id_or_login ) {
+ if ( is_numeric( $id_or_login ) )
+ $user = get_user_by( 'id', $id_or_login );
+ else
+ $user = get_user_by( 'login', $id_or_login );
+
+ return $user;
+ }
+
+ public function get_check( $id_or_login ) {
+ $user = $this->get( $id_or_login );
+
+ if ( ! $user ) {
+ \WP_CLI::error( "Invalid user ID or login: $id_or_login" );
+ }
+
+ return $user;
+ }
+
+ public function get_many( $ids_or_logins ) {
+ $users = array();
+
+ foreach ( $ids_or_logins as $id_or_login ) {
+ $user = $this->get( $id_or_login );
+ if ( $user ) {
+ $users[] = $user;
+ } else {
+ \WP_CLI::warning( "Invalid user ID or login: $id_or_login" );
+ }
+ }
+
+ return $users;
+ }
+}
+
'roles'
);
+ public function __construct() {
+ $this->fetcher = new \WP_CLI\FetcherUser;
+ }
+
/**
* List users.
*
* wp user get bob --format=json > bob.json
*/
public function get( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
if ( method_exists( $user, 'to_array' ) ) {
$user_data = $user->to_array();
'reassign' => null
) );
- foreach ( $args as $key => $arg ) {
- $args[ $key ] = self::get_user( $arg )->ID;
- }
+ $users = $this->fetcher->get_many( $args );
+
+ parent::_delete( $users, $assoc_args, function ( $user, $assoc_args ) {
+ $user_id = $user->ID;
- parent::_delete( $args, $assoc_args, function ( $user_id, $assoc_args ) {
if ( is_multisite() ) {
$r = wpmu_delete_user( $user_id );
} else {
* wp user update mary --user_pass=marypass
*/
public function update( $args, $assoc_args ) {
- foreach ( $args as $key => $arg ) {
- $args[ $key ] = self::get_user( $arg )->ID;
+ $user_ids = array();
+
+ foreach ( $this->fetcher->get_many( $args ) as $user ) {
+ $user_ids[] = $user->ID;
}
- parent::_update( $args, $assoc_args, 'wp_update_user' );
+ parent::_update( $user_ids, $assoc_args, 'wp_update_user' );
}
/**
* @subcommand set-role
*/
public function set_role( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
$role = isset( $args[1] ) ? $args[1] : get_option( 'default_role' );
* @subcommand add-role
*/
public function add_role( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
$role = $args[1];
* @subcommand remove-role
*/
public function remove_role( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
if ( isset( $args[1] ) ) {
$role = $args[1];
* @subcommand add-cap
*/
public function add_cap( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
if ( $user ) {
$cap = $args[1];
$user->add_cap( $cap );
* @subcommand remove-cap
*/
public function remove_cap( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
if ( $user ) {
$cap = $args[1];
$user->remove_cap( $cap );
* @subcommand list-caps
*/
public function list_caps( $args, $assoc_args ) {
- $user = self::get_user( $args[0] );
+ $user = $this->fetcher->get_check( $args[0] );
if ( $user ) {
$user->get_role_caps();
}
}
- private static function get_user( $id_or_login ) {
- if ( is_numeric( $id_or_login ) )
- $user = get_user_by( 'id', $id_or_login );
- else
- $user = get_user_by( 'login', $id_or_login );
-
- if ( ! $user ) {
- WP_CLI::warning( "Invalid user ID or login: $id_or_login" );
- }
-
- return $user;
- }
-
/**
* Import users from a CSV file.
*