<?php
/**
* CLI class exposed by WPCLI
*
* @package automattic/jetpack-search
*/
namespace Automattic\Jetpack\Search;
use \WP_CLI;
use \WP_CLI_Command;
use \WP_Error;
if ( ! class_exists( 'WP_CLI_Command' ) ) {
return;
}
/**
* Provide functionality by WPCLI.
*/
class CLI extends WP_CLI_Command {
/**
* Auto config instant search, including set result format, set up overlay widgets and add a search input to the home page thru widgets or blocks.
*
* ## EXAMPLES
*
* wp jetpack-search auto_config user_login
*
* wp jetpack-search auto_config user_id
*
* @param array $args - Args passsed in.
*/
public function auto_config( $args ) {
try {
if ( empty( $args ) ) {
WP_CLI::error( 'A user login or ID is required.' );
}
// Some functions may require admin capabilities to run.
$ret = $this->set_user( $args[0] );
if ( is_wp_error( $ret ) ) {
WP_CLI::error( $ret->get_error_message() );
}
WP_CLI::line( 'Running as user ' . $ret->user_login . '…' );
$blog_id = Helper::get_wpcom_site_id();
Instant_Search::instance( $blog_id )->auto_config_search();
WP_CLI::success( 'Auto config success!' );
} catch ( \Exception $e ) {
WP_CLI::error( $e->getMessage() );
}
}
/**
* Set current user by ID or login
*
* @param string|int $user User ID or login.
*/
protected function set_user( $user ) {
$get_user_by = 'login';
if ( filter_var( $user, FILTER_VALIDATE_INT ) > 0 ) {
$get_user_by = 'ID';
}
$user_info = get_user_by( $get_user_by, (string) $user );
if ( ! $user_info ) {
return new WP_Error( 'user_not_found', "Could not find user '${user}' by ${get_user_by}." );
}
return wp_set_current_user( $user_info->ID );
}
}