/**
* Disconnect Jetpack Blogs or Users
*
* ## OPTIONS
*
* blog: Disconnect the entire blog.
*
* user <user_identifier>: Disconnect a specific user from WordPress.com.
*
* Please note, the primary account that the blog is connected
* to WordPress.com with cannot be disconnected without
* disconnecting the entire blog.
*
* ## EXAMPLES
*
* wp jetpack disconnect blog
* wp jetpack disconnect user 13
* wp jetpack disconnect user username
* wp jetpack disconnect user [email protected]
*
* @synopsis <blog|user> [<user_identifier>]
*/
public function disconnect($args, $assoc_args)
{
if (!Jetpack::is_active()) {
WP_CLI::error(__('You cannot disconnect, without having first connected.', 'jetpack'));
}
$action = isset($args[0]) ? $args[0] : 'prompt';
if (!in_array($action, array('blog', 'user', 'prompt'))) {
WP_CLI::error(sprintf(__('%s is not a valid command.', 'jetpack'), $action));
}
if (in_array($action, array('user'))) {
if (isset($args[1])) {
$user_id = $args[1];
if (ctype_digit($user_id)) {
$field = 'id';
$user_id = (int) $user_id;
} elseif (is_email($user_id)) {
$field = 'email';
$user_id = sanitize_user($user_id, true);
} else {
$field = 'login';
$user_id = sanitize_user($user_id, true);
}
if (!($user = get_user_by($field, $user_id))) {
WP_CLI::error(__('Please specify a valid user.', 'jetpack'));
}
} else {
WP_CLI::error(__('Please specify a user by either ID, username, or email.', 'jetpack'));
}
}
switch ($action) {
case 'blog':
Jetpack::log('disconnect');
Jetpack::disconnect();
WP_CLI::success(__('Jetpack has been successfully disconnected.', 'jetpack'));
break;
case 'user':
if (Jetpack::unlink_user($user->ID)) {
Jetpack::log('unlink', $user->ID);
WP_CLI::success(sprintf(__('%s has been successfully disconnected.', 'jetpack'), $action));
} else {
WP_CLI::error(sprintf(__('%s could not be disconnected. Are you sure they\'re connected currently?', 'jetpack'), "{$user->login} <{$user->email}>"));
}
break;
case 'prompt':
WP_CLI::error(__('Please specify if you would like to disconnect a blog or user.', 'jetpack'));
break;
}
}