/** * 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@domain.com * * @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; } }
/** * Unlink a user from WordPress.com * * This will fail if called by the Master User. */ function unlink_user() { Jetpack::log('unlink'); return Jetpack::unlink_user(); }
/** * Unlinks current user from the WordPress.com Servers. * * @since 4.3.0 * @uses Jetpack::unlink_user * * @return bool|WP_Error True if user successfully unlinked. */ public static function unlink_user($data) { $param = $data->get_json_params(); if (!isset($param['linked']) || $param['linked'] !== false) { return new WP_Error('invalid_param', esc_html__('Invalid Parameter', 'jetpack'), array('status' => 404)); } if (Jetpack::unlink_user()) { return rest_ensure_response(array('code' => 'success')); } return new WP_Error('unlink_user_failed', esc_html__('Was not able to unlink the user. Please try again.', 'jetpack'), array('status' => 400)); }
/** * Unlinks a user from the WordPress.com Servers. * Default $data['id'] will default to current_user_id if no value is given. * * Example: '/unlink?id=1234' * * @since 4.1.0 * @uses Jetpack::unlink_user * * @param WP_REST_Request $data { * Array of parameters received by request. * * @type int $id ID of user to unlink. * } * * @return bool|WP_Error True if user successfully unlinked. */ public static function unlink_user($data) { if (isset($data['id']) && Jetpack::unlink_user($data['id'])) { return rest_ensure_response(array('code' => 'success')); } return new WP_Error('unlink_user_failed', esc_html__('Was not able to unlink the user. Please try again.', 'jetpack'), array('status' => 400)); }