ActionScheduler_DBStoreMigrator::save_actionpublicWC 1.0

Save an action with optional last attempt date.

Normally, saving an action sets its attempted date to 0000-00-00 00:00:00 because when an action is first saved, it can't have been attempted yet, but migrated completed actions will have an attempted date, so we need to save that when first saving the action.

Method of the class: ActionScheduler_DBStoreMigrator{}

No Hooks.

Returns

String. The action ID

Usage

$ActionScheduler_DBStoreMigrator = new ActionScheduler_DBStoreMigrator();
$ActionScheduler_DBStoreMigrator->save_action( $action, ?DateTime $scheduled_date, ?DateTime $last_attempt_date );
$action(ActionScheduler_Action) (required)
Action to migrate.
?DateTime $scheduled_date
.
Default: null
?DateTime $last_attempt_date
.
Default: null

ActionScheduler_DBStoreMigrator::save_action() code WC 10.6.2

public function save_action( ActionScheduler_Action $action, ?DateTime $scheduled_date = null, ?DateTime $last_attempt_date = null ) {
	try {
		/**
		 * Global.
		 *
		 * @var \wpdb $wpdb
		 */
		global $wpdb;

		$action_id = parent::save_action( $action, $scheduled_date );

		if ( null !== $last_attempt_date ) {
			$data = array(
				'last_attempt_gmt'   => $this->get_scheduled_date_string( $action, $last_attempt_date ),
				'last_attempt_local' => $this->get_scheduled_date_string_local( $action, $last_attempt_date ),
			);

			$wpdb->update( $wpdb->actionscheduler_actions, $data, array( 'action_id' => $action_id ), array( '%s', '%s' ), array( '%d' ) );
		}

		return $action_id;
	} catch ( \Exception $e ) {
		// translators: %s is an error message.
		throw new \RuntimeException( sprintf( __( 'Error saving action: %s', 'woocommerce' ), $e->getMessage() ), 0 );
	}
}