70 lines
1.7 KiB
PHP
70 lines
1.7 KiB
PHP
<?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 );
|
|
}
|
|
}
|