198 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			198 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * 3.0 Data Migration - Base.
 | |
|  *
 | |
|  * @subpackage  Admin/Upgrades/v3
 | |
|  * @copyright   Copyright (c) 2018, Easy Digital Downloads, LLC
 | |
|  * @license     http://opensource.org/licenses/gpl-2.0.php GNU Public License
 | |
|  * @since       3.0
 | |
|  */
 | |
| 
 | |
| namespace EDD\Admin\Upgrades\v3;
 | |
| 
 | |
| // Exit if accessed directly
 | |
| defined( 'ABSPATH' ) || exit;
 | |
| 
 | |
| /**
 | |
|  * Base Class.
 | |
|  *
 | |
|  * @since 3.0
 | |
|  */
 | |
| class Base extends \EDD_Batch_Export {
 | |
| 
 | |
| 	/**
 | |
| 	 * Orders.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	const ORDERS = 'orders';
 | |
| 
 | |
| 	/**
 | |
| 	 * Discounts.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	const DISCOUNTS = 'discounts';
 | |
| 
 | |
| 	/**
 | |
| 	 * Our export type. Used for export-type specific filters/actions.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	public $export_type = '';
 | |
| 
 | |
| 	/**
 | |
| 	 * Allows for a non-download batch processing to be run.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   bool
 | |
| 	 */
 | |
| 	public $is_void = true;
 | |
| 
 | |
| 	/**
 | |
| 	 * Sets the number of items to pull on each step.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   int
 | |
| 	 */
 | |
| 	public $per_step = 50;
 | |
| 
 | |
| 	/**
 | |
| 	 * Is the upgrade done?
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   bool
 | |
| 	 */
 | |
| 	public $done;
 | |
| 
 | |
| 	/**
 | |
| 	 * Message.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	public $message;
 | |
| 
 | |
| 	/**
 | |
| 	 * Completed message.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	public $completed_message;
 | |
| 
 | |
| 	/**
 | |
| 	 * Upgrade routine.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 * @var   string
 | |
| 	 */
 | |
| 	public $upgrade;
 | |
| 
 | |
| 	/**
 | |
| 	 * Retrieve the data pertaining to the current step and migrate as necessary.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @return bool True if data was migrated, false otherwise.
 | |
| 	 */
 | |
| 	public function get_data() {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Process a step.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @return bool
 | |
| 	 */
 | |
| 	public function process_step() {
 | |
| 		if ( ! $this->can_export() ) {
 | |
| 			wp_die(
 | |
| 				esc_html__( 'You do not have permission to run this upgrade.', 'easy-digital-downloads' ),
 | |
| 				esc_html__( 'Error', 'easy-digital-downloads' ),
 | |
| 				array(
 | |
| 					'response' => 403,
 | |
| 				)
 | |
| 			);
 | |
| 		}
 | |
| 
 | |
| 		$had_data = $this->get_data();
 | |
| 
 | |
| 		if ( $had_data ) {
 | |
| 			$this->done = false;
 | |
| 			// Save the *next* step to do.
 | |
| 			update_option( sprintf( 'edd_v3_migration_%s_step', sanitize_key( $this->upgrade ) ), $this->step + 1 );
 | |
| 			return true;
 | |
| 		} else {
 | |
| 			$this->done    = true;
 | |
| 			$this->message = $this->completed_message;
 | |
| 			edd_set_upgrade_complete( $this->upgrade );
 | |
| 			delete_option( sprintf( 'edd_v3_migration_%s_step', sanitize_key( $this->upgrade ) ) );
 | |
| 			edd_v30_is_migration_complete();
 | |
| 			return false;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set the headers.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 */
 | |
| 	public function headers() {
 | |
| 		edd_set_time_limit();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Perform the migration.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @return void
 | |
| 	 */
 | |
| 	public function export() {
 | |
| 
 | |
| 		// Set headers.
 | |
| 		$this->headers();
 | |
| 
 | |
| 		edd_die();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Return the global database interface.
 | |
| 	 *
 | |
| 	 * @since  3.0
 | |
| 	 * @access protected
 | |
| 	 * @static
 | |
| 	 *
 | |
| 	 * @return \wpdb|\stdClass
 | |
| 	 */
 | |
| 	protected static function get_db() {
 | |
| 		return isset( $GLOBALS['wpdb'] )
 | |
| 			? $GLOBALS['wpdb']
 | |
| 			: new \stdClass();
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Set properties specific to the export.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 *
 | |
| 	 * @param array $request Form data passed into the batch processor.
 | |
| 	 */
 | |
| 	public function set_properties( $request ) {
 | |
| 	}
 | |
| 
 | |
| 	/**
 | |
| 	 * Allow for pre-fetching of data for the remainder of the batch processor.
 | |
| 	 *
 | |
| 	 * @since 3.0
 | |
| 	 */
 | |
| 	public function pre_fetch() {
 | |
| 	}
 | |
| }
 |