134 lines
2.5 KiB
PHP
134 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Entry migration abstract class.
|
|
*
|
|
* @author Prospress
|
|
* @category Class
|
|
* @package WooCommerce Subscriptions
|
|
* @since 2.4
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly
|
|
}
|
|
|
|
abstract class WCS_Migrator {
|
|
/**
|
|
* @var mixed
|
|
*/
|
|
protected $source_store;
|
|
|
|
/**
|
|
* @var mixed
|
|
*/
|
|
protected $destination_store;
|
|
|
|
/**
|
|
* @var WC_Logger_Interface
|
|
*/
|
|
protected $logger;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
protected $log_handle;
|
|
|
|
/**
|
|
* WCS_Migrator constructor.
|
|
*
|
|
* @param mixed $source_store Source store.
|
|
* @param mixed $destination_store $destination store.
|
|
* @param WC_Logger $logger Logger component.
|
|
*
|
|
* @since 2.4
|
|
*/
|
|
public function __construct( $source_store, $destination_store, $logger ) {
|
|
$this->source_store = $source_store;
|
|
$this->destination_store = $destination_store;
|
|
$this->logger = $logger;
|
|
}
|
|
|
|
/**
|
|
* Should this entry be migrated.
|
|
*
|
|
* @param int $entry_id
|
|
*
|
|
* @return bool
|
|
* @since 2.4
|
|
*/
|
|
abstract public function should_migrate_entry( $entry_id );
|
|
|
|
/**
|
|
* Gets the item from the source store.
|
|
*
|
|
* @param int $entry_id
|
|
*
|
|
* @return mixed
|
|
* @since 2.4
|
|
*/
|
|
abstract public function get_source_store_entry( $entry_id );
|
|
|
|
/**
|
|
* save the item to the destination store.
|
|
*
|
|
* @param int $entry_id
|
|
*
|
|
* @return mixed
|
|
* @since 2.4
|
|
*/
|
|
abstract public function save_destination_store_entry( $entry_id );
|
|
|
|
/**
|
|
* deletes the item from the source store.
|
|
*
|
|
* @param int $entry_id
|
|
*
|
|
* @return mixed
|
|
* @since 2.4
|
|
*/
|
|
abstract public function delete_source_store_entry( $entry_id );
|
|
|
|
/**
|
|
* Runs after a entry has been migrated.
|
|
*
|
|
* @param int $old_entry_id
|
|
* @param mixed $new_entry
|
|
*
|
|
* @return mixed
|
|
*/
|
|
abstract protected function migrated_entry( $old_entry_id, $new_entry );
|
|
|
|
/**
|
|
* Migrates our entry.
|
|
*
|
|
* @param int $entry_id
|
|
*
|
|
* @return mixed
|
|
* @since 2.4
|
|
*/
|
|
public function migrate_entry( $entry_id ) {
|
|
$source_store_item = $this->get_source_store_entry( $entry_id );
|
|
if ( $source_store_item ) {
|
|
$destination_store_item = $this->save_destination_store_entry( $entry_id );
|
|
$this->delete_source_store_entry( $entry_id );
|
|
|
|
$this->migrated_entry( $entry_id, $destination_store_item );
|
|
|
|
return $destination_store_item;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Add a message to the log
|
|
*
|
|
* @param string $message The message to be logged
|
|
*
|
|
* @since 2.4.0
|
|
*/
|
|
protected function log( $message ) {
|
|
$this->logger->add( $this->log_handle, $message );
|
|
}
|
|
}
|