Switch to action scheduler
This commit is contained in:
parent
f81791dab9
commit
d990b5192f
|
@ -211,8 +211,9 @@ class WC_Admin_Notices {
|
||||||
*/
|
*/
|
||||||
public static function update_notice() {
|
public static function update_notice() {
|
||||||
if ( version_compare( get_option( 'woocommerce_db_version' ), WC_VERSION, '<' ) ) {
|
if ( version_compare( get_option( 'woocommerce_db_version' ), WC_VERSION, '<' ) ) {
|
||||||
$updater = new WC_Background_Updater();
|
$next_scheduled_date = WC()->queue()->get_next( 'woocommerce_run_update_callback', null, 'woocommerce-db-updates' );
|
||||||
if ( $updater->is_updating() || ! empty( $_GET['do_update_woocommerce'] ) ) { // WPCS: input var ok, CSRF ok.
|
|
||||||
|
if ( $next_scheduled_date || ! empty( $_GET['do_update_woocommerce'] ) ) { // WPCS: input var ok, CSRF ok.
|
||||||
include dirname( __FILE__ ) . '/views/html-notice-updating.php';
|
include dirname( __FILE__ ) . '/views/html-notice-updating.php';
|
||||||
} else {
|
} else {
|
||||||
include dirname( __FILE__ ) . '/views/html-notice-update.php';
|
include dirname( __FILE__ ) . '/views/html-notice-update.php';
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
* Background Updater
|
* Background Updater
|
||||||
*
|
*
|
||||||
* @version 2.6.0
|
* @version 2.6.0
|
||||||
|
* @deprecated 3.6.0 Replaced with queue.
|
||||||
* @package WooCommerce/Classes
|
* @package WooCommerce/Classes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -126,19 +126,12 @@ class WC_Install {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
|
||||||
* Background update class.
|
|
||||||
*
|
|
||||||
* @var object
|
|
||||||
*/
|
|
||||||
private static $background_updater;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Hook in tabs.
|
* Hook in tabs.
|
||||||
*/
|
*/
|
||||||
public static function init() {
|
public static function init() {
|
||||||
add_action( 'init', array( __CLASS__, 'check_version' ), 5 );
|
add_action( 'init', array( __CLASS__, 'check_version' ), 5 );
|
||||||
add_action( 'init', array( __CLASS__, 'init_background_updater' ), 5 );
|
add_action( 'woocommerce_run_update_callback', array( __CLASS__, 'run_update_callback' ) );
|
||||||
add_action( 'admin_init', array( __CLASS__, 'install_actions' ) );
|
add_action( 'admin_init', array( __CLASS__, 'install_actions' ) );
|
||||||
add_filter( 'plugin_action_links_' . WC_PLUGIN_BASENAME, array( __CLASS__, 'plugin_action_links' ) );
|
add_filter( 'plugin_action_links_' . WC_PLUGIN_BASENAME, array( __CLASS__, 'plugin_action_links' ) );
|
||||||
add_filter( 'plugin_row_meta', array( __CLASS__, 'plugin_row_meta' ), 10, 2 );
|
add_filter( 'plugin_row_meta', array( __CLASS__, 'plugin_row_meta' ), 10, 2 );
|
||||||
|
@ -146,14 +139,6 @@ class WC_Install {
|
||||||
add_filter( 'cron_schedules', array( __CLASS__, 'cron_schedules' ) );
|
add_filter( 'cron_schedules', array( __CLASS__, 'cron_schedules' ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Init background updates
|
|
||||||
*/
|
|
||||||
public static function init_background_updater() {
|
|
||||||
include_once dirname( __FILE__ ) . '/class-wc-background-updater.php';
|
|
||||||
self::$background_updater = new WC_Background_Updater();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check WooCommerce version and run the updater is required.
|
* Check WooCommerce version and run the updater is required.
|
||||||
*
|
*
|
||||||
|
@ -166,6 +151,83 @@ class WC_Install {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run an update callback when triggered by ActionScheduler.
|
||||||
|
*
|
||||||
|
* @since 3.6.0
|
||||||
|
* @param string $callback Callback name.
|
||||||
|
*/
|
||||||
|
public function run_update_callback( $callback ) {
|
||||||
|
include_once dirname( __FILE__ ) . '/wc-update-functions.php';
|
||||||
|
|
||||||
|
if ( is_callable( $callback ) ) {
|
||||||
|
$this->run_update_callback_start( $callback );
|
||||||
|
$result = (bool) call_user_func( $callback );
|
||||||
|
$this->run_update_callback_end( $callback, $result );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggered when a callback will run.
|
||||||
|
*
|
||||||
|
* @since 3.6.0
|
||||||
|
* @param string $callback Callback name.
|
||||||
|
*/
|
||||||
|
protected function run_update_callback_start( $callback ) {
|
||||||
|
wc_maybe_define_constant( 'WC_UPDATING', true );
|
||||||
|
|
||||||
|
$logger = wc_get_logger();
|
||||||
|
$logger->info(
|
||||||
|
sprintf(
|
||||||
|
'Running %s callback',
|
||||||
|
$callback
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'source' => 'wc_db_updates',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Triggered when a callback has ran.
|
||||||
|
*
|
||||||
|
* @since 3.6.0
|
||||||
|
* @param string $callback Callback name.
|
||||||
|
* @param bool $result Return value from callback. Non-false need to run again.
|
||||||
|
*/
|
||||||
|
protected function run_update_callback_end( $callback, $result ) {
|
||||||
|
$logger = wc_get_logger();
|
||||||
|
|
||||||
|
if ( $result ) {
|
||||||
|
WC()->queue()->add(
|
||||||
|
'woocommerce_run_update_callback',
|
||||||
|
array(
|
||||||
|
'update_callback' => $callback,
|
||||||
|
),
|
||||||
|
'woocommerce-db-updates'
|
||||||
|
);
|
||||||
|
$logger->info(
|
||||||
|
sprintf(
|
||||||
|
'%s callback needs to run again',
|
||||||
|
$callback
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'source' => 'wc_db_updates',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
$logger->info(
|
||||||
|
sprintf(
|
||||||
|
'Finished running %s callback',
|
||||||
|
$callback
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'source' => 'wc_db_updates',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Install actions when a update button is clicked within the admin area.
|
* Install actions when a update button is clicked within the admin area.
|
||||||
*
|
*
|
||||||
|
@ -292,7 +354,6 @@ class WC_Install {
|
||||||
private static function maybe_update_db_version() {
|
private static function maybe_update_db_version() {
|
||||||
if ( self::needs_db_update() ) {
|
if ( self::needs_db_update() ) {
|
||||||
if ( apply_filters( 'woocommerce_enable_auto_update_db', false ) ) {
|
if ( apply_filters( 'woocommerce_enable_auto_update_db', false ) ) {
|
||||||
self::init_background_updater();
|
|
||||||
self::update();
|
self::update();
|
||||||
} else {
|
} else {
|
||||||
WC_Admin_Notices::add_notice( 'update' );
|
WC_Admin_Notices::add_notice( 'update' );
|
||||||
|
@ -326,24 +387,30 @@ class WC_Install {
|
||||||
private static function update() {
|
private static function update() {
|
||||||
$current_db_version = get_option( 'woocommerce_db_version' );
|
$current_db_version = get_option( 'woocommerce_db_version' );
|
||||||
$logger = wc_get_logger();
|
$logger = wc_get_logger();
|
||||||
$update_queued = false;
|
|
||||||
|
|
||||||
foreach ( self::get_db_update_callbacks() as $version => $update_callbacks ) {
|
foreach ( self::get_db_update_callbacks() as $version => $update_callbacks ) {
|
||||||
if ( version_compare( $current_db_version, $version, '<' ) ) {
|
if ( version_compare( $current_db_version, $version, '<' ) ) {
|
||||||
foreach ( $update_callbacks as $update_callback ) {
|
foreach ( $update_callbacks as $update_callback ) {
|
||||||
$logger->info(
|
$logger->info(
|
||||||
sprintf( 'Queuing %s - %s', $version, $update_callback ),
|
sprintf(
|
||||||
array( 'source' => 'wc_db_updates' )
|
'Queuing %s - %s',
|
||||||
|
$version,
|
||||||
|
$update_callback
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'source' => 'wc_db_updates',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
WC()->queue()->add(
|
||||||
|
'woocommerce_run_update_callback',
|
||||||
|
array(
|
||||||
|
'update_callback' => $update_callback,
|
||||||
|
),
|
||||||
|
'woocommerce-db-updates'
|
||||||
);
|
);
|
||||||
self::$background_updater->push_to_queue( $update_callback );
|
|
||||||
$update_queued = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $update_queued ) {
|
|
||||||
self::$background_updater->save()->dispatch();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue