<?php /** * Class CLI * * @package WP_CLI_Cron_Control_Offload */ namespace Automattic\WP\WP_CLI_Cron_Control_Offload; if ( ! defined( 'WP_CLI' ) || ! \WP_CLI ) { return false; } use WP_CLI; use WP_CLI_Command; /** * Offload WP-CLI commands to cron */ class CLI extends WP_CLI_Command { /** * Create an event to run a given WP-CLI command * * @subcommand create * @synopsis --command=<command> [--timestamp=<timestamp>] * @param array $args Array of positional arguments. * @param array $assoc_args Array of flags. */ public function create( $args, $assoc_args ) { $command = WP_CLI\Utils\get_flag_value( $assoc_args, 'command', '' ); $command = validate_command( $command ); if ( is_wp_error( $command ) ) { WP_CLI::error( $command->get_error_message() ); } $timestamp = WP_CLI\Utils\get_flag_value( $assoc_args, 'timestamp', null ); if ( is_numeric( $timestamp ) ) { $timestamp = absint( $timestamp ); } $scheduled = schedule_cli_command( $command, $timestamp ); if ( is_wp_error( $scheduled ) ) { WP_CLI::error( $scheduled->get_error_message() ); } /* translators: 1: Human time difference, 2. Timestamp in UTC */ WP_CLI::success( sprintf( __( 'Command scheduled for %1$s from now (%2$s)', 'wp-cli-cron-control-offload' ), human_time_diff( $scheduled ), date( 'Y-m-d H:i:s T', $scheduled ) ) ); } } WP_CLI::add_command( CLI_NAMESPACE, __NAMESPACE__ . '\CLI' );