Action_Scheduler\WP_CLI\Action

Get_Command::execute()publicWC 1.0

Execute command.

Method of the class: Get_Command{}

No Hooks.

Return

null. Nothing (null).

Usage

$Get_Command = new Get_Command();
$Get_Command->execute();

Get_Command::execute() code WC 9.8.1

public function execute() {
	$action_id = $this->args[0];
	$store     = \ActionScheduler::store();
	$logger    = \ActionScheduler::logger();
	$action    = $store->fetch_action( $action_id );

	if ( is_a( $action, ActionScheduler_NullAction::class ) ) {
		/* translators: %d is action ID. */
		\WP_CLI::error( sprintf( esc_html__( 'Unable to retrieve action %d.', 'woocommerce' ), $action_id ) );
	}

	$only_logs   = ! empty( $this->assoc_args['field'] ) && 'log_entries' === $this->assoc_args['field'];
	$only_logs   = $only_logs || ( ! empty( $this->assoc_args['fields'] && 'log_entries' === $this->assoc_args['fields'] ) );
	$log_entries = array();

	foreach ( $logger->get_logs( $action_id ) as $log_entry ) {
		$log_entries[] = array(
			'date'    => $log_entry->get_date()->format( static::DATE_FORMAT ),
			'message' => $log_entry->get_message(),
		);
	}

	if ( $only_logs ) {
		$args = array(
			'format' => \WP_CLI\Utils\get_flag_value( $this->assoc_args, 'format', 'table' ),
		);

		$formatter = new \WP_CLI\Formatter( $args, array( 'date', 'message' ) );
		$formatter->display_items( $log_entries );

		return;
	}

	try {
		$status = $store->get_status( $action_id );
	} catch ( \Exception $e ) {
		\WP_CLI::error( $e->getMessage() );
	}

	$action_arr = array(
		'id'             => $this->args[0],
		'hook'           => $action->get_hook(),
		'status'         => $status,
		'args'           => $action->get_args(),
		'group'          => $action->get_group(),
		'recurring'      => $action->get_schedule()->is_recurring() ? 'yes' : 'no',
		'scheduled_date' => $this->get_schedule_display_string( $action->get_schedule() ),
		'log_entries'    => $log_entries,
	);

	$fields = array_keys( $action_arr );

	if ( ! empty( $this->assoc_args['fields'] ) ) {
		$fields = explode( ',', $this->assoc_args['fields'] );
	}

	$formatter = new \WP_CLI\Formatter( $this->assoc_args, $fields );
	$formatter->display_item( $action_arr );
}