website/wp-content/plugins/gravityforms/includes/class-gf-background-upgrade...

104 lines
2.2 KiB
PHP

<?php
/**
* Background Upgrader
*
* Uses https://github.com/A5hleyRich/wp-background-processing to handle DB
* updates in the background.
*
* @class GF_Background_Upgrader
* @version 2.3
* @category Class
* @author Rocketgenius
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
require_once( 'libraries/wp-async-request.php' );
require_once( 'libraries/gf-background-process.php' );
/**
* GF_Background_Upgrader Class.
*/
class GF_Background_Upgrader extends GF_Background_Process {
/**
* @var string
*/
protected $action = 'gf_upgrader';
/**
* Returns the data for the background upgrader.
*
* @since 2.3
*
* @return array
*/
public function get_data() {
return $this->data;
}
/**
* Is the queue empty for all blogs?
*
* @since 2.3
*
* @return bool
*/
public function is_queue_empty() {
return parent::is_queue_empty();
}
/**
* Is the updater running?
* @return boolean
*/
public function is_updating() {
return false === $this->is_queue_empty();
}
/**
* Task
*
* Override this method to perform any actions required on each
* queue item. Return the modified item for further processing
* in the next pass through. Or, return false to remove the
* item from the queue.
*
* @param string $callback Update callback function
* @return mixed
*/
protected function task( $callback ) {
if ( ! defined( 'GF_UPGRADING' ) ) {
define( 'GF_UPGRADING', true );
}
if ( is_callable( $callback ) ) {
GFCommon::log_debug( sprintf( '%s(): Running callback: %s', __METHOD__, print_r( $callback, 1 ) ) );
$needs_more_time = call_user_func( $callback );
if ( $needs_more_time ) {
GFCommon::log_debug( sprintf( '%s(): Callback needs another run: %s', __METHOD__, print_r( $callback, 1 ) ) );
return $callback;
} else {
GFCommon::log_debug( sprintf( '%s(): Finished callback: %s', __METHOD__, print_r( $callback, 1 ) ) );
}
} else {
GFCommon::log_debug( sprintf( '%s(): Could not find callback: %s', __METHOD__, print_r( $callback, 1 ) ) );
}
return false;
}
/**
* Complete
*
* Override if applicable, but ensure that the below actions are
* performed, or, call parent::complete().
*/
protected function complete() {
parent::complete();
}
}