48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
/**
 | 
						|
 * Class ActionScheduler_DBStoreMigrator
 | 
						|
 *
 | 
						|
 * A  class for direct saving of actions to the table data store during migration.
 | 
						|
 *
 | 
						|
 * @since 3.0.0
 | 
						|
 */
 | 
						|
class ActionScheduler_DBStoreMigrator extends ActionScheduler_DBStore {
 | 
						|
 | 
						|
	/**
 | 
						|
	 * 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.
 | 
						|
	 *
 | 
						|
	 * @param ActionScheduler_Action $action
 | 
						|
	 * @param \DateTime $scheduled_date Optional date of the first instance to store.
 | 
						|
	 * @param \DateTime $last_attempt_date Optional date the action was last attempted.
 | 
						|
	 *
 | 
						|
	 * @return string The action ID
 | 
						|
	 * @throws \RuntimeException When the action is not saved.
 | 
						|
	 */
 | 
						|
	public function save_action( ActionScheduler_Action $action, \DateTime $scheduled_date = null, \DateTime $last_attempt_date = null ){
 | 
						|
		try {
 | 
						|
			/** @var \wpdb $wpdb */
 | 
						|
			global $wpdb;
 | 
						|
 | 
						|
			$action_id = parent::save_action( $action, $scheduled_date );
 | 
						|
 | 
						|
			if ( null !== $last_attempt_date ) {
 | 
						|
				$data = [
 | 
						|
					'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 ) {
 | 
						|
			throw new \RuntimeException( sprintf( __( 'Error saving action: %s', 'woocommerce' ), $e->getMessage() ), 0 );
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |