165 lines
3.6 KiB
PHP
165 lines
3.6 KiB
PHP
<?php
|
|
/**
|
|
* Recount download earnings and stats
|
|
*
|
|
* This class handles batch processing of recounting earnings and stats
|
|
*
|
|
* @subpackage Admin/Tools/EDD_Tools_Recount_Stats
|
|
* @copyright Copyright (c) 2021, Sandhills Development, LLC
|
|
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
|
* @since 2.5
|
|
*/
|
|
|
|
// Exit if accessed directly
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* EDD_Tools_Recount_Stats Class
|
|
*
|
|
* @since 2.5
|
|
*/
|
|
class EDD_Tools_Recount_Download_Stats extends EDD_Batch_Export {
|
|
|
|
/**
|
|
* Our export type. Used for export-type specific filters/actions
|
|
* @var string
|
|
* @since 2.5
|
|
*/
|
|
public $export_type = '';
|
|
|
|
/**
|
|
* Allows for a non-download batch processing to be run.
|
|
* @since 2.5
|
|
* @var boolean
|
|
*/
|
|
public $is_void = true;
|
|
|
|
/**
|
|
* Sets the number of items to pull on each step
|
|
* @since 2.5
|
|
* @var integer
|
|
*/
|
|
public $per_step = 30;
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
public $message = '';
|
|
|
|
/**
|
|
* ID of the download we're recounting stats for
|
|
* @var int|false
|
|
*/
|
|
protected $download_id = false;
|
|
|
|
/**
|
|
* Get the Export Data
|
|
*
|
|
* @since 2.5
|
|
* @global object $wpdb Used to query the database using the WordPress
|
|
* Database API
|
|
* @return bool
|
|
*/
|
|
public function get_data() {
|
|
|
|
$accepted_statuses = apply_filters( 'edd_recount_accepted_statuses', edd_get_gross_order_statuses() );
|
|
|
|
// These arguments are no longer used, but keeping the filter here to apply the deprecation notice.
|
|
$deprecated_args = edd_apply_filters_deprecated( 'edd_recount_download_stats_args', array(
|
|
array(
|
|
'post_parent' => $this->download_id,
|
|
'post_type' => 'edd_log',
|
|
'posts_per_page' => $this->per_step,
|
|
'post_status' => 'publish',
|
|
'paged' => $this->step,
|
|
'log_type' => 'sale',
|
|
'fields' => 'ids',
|
|
)
|
|
), '3.0' );
|
|
|
|
if ( ! empty( $this->download_id ) && is_numeric( $this->download_id ) ) {
|
|
edd_recalculate_download_sales_earnings( $this->download_id );
|
|
|
|
return false;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Return the calculated completion percentage
|
|
*
|
|
* @since 2.5
|
|
* @return int
|
|
*/
|
|
public function get_percentage_complete() {
|
|
return 100;
|
|
}
|
|
|
|
/**
|
|
* Set the properties specific to the payments export
|
|
*
|
|
* @since 2.5
|
|
* @param array $request The Form Data passed into the batch processing
|
|
*/
|
|
public function set_properties( $request ) {
|
|
$this->download_id = isset( $request['download_id'] ) ? sanitize_text_field( $request['download_id'] ) : false;
|
|
}
|
|
|
|
/**
|
|
* Process a step
|
|
*
|
|
* @since 2.5
|
|
* @return bool
|
|
*/
|
|
public function process_step() {
|
|
if ( ! $this->can_export() ) {
|
|
wp_die( __( 'You do not have permission to perform this action.', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) );
|
|
}
|
|
|
|
$more_to_do = $this->get_data();
|
|
|
|
if( $more_to_do ) {
|
|
$this->done = false;
|
|
return true;
|
|
} else {
|
|
$this->delete_data( 'edd_recount_total_' . $this->download_id );
|
|
$this->delete_data( 'edd_temp_recount_download_stats' );
|
|
$this->done = true;
|
|
$this->message = sprintf( __( 'Earnings and sales stats successfully recounted for %s.', 'easy-digital-downloads' ), get_the_title( $this->download_id ) );
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public function headers() {
|
|
edd_set_time_limit();
|
|
}
|
|
|
|
/**
|
|
* Perform the export
|
|
*
|
|
* @since 2.5
|
|
* @return void
|
|
*/
|
|
public function export() {
|
|
|
|
// Set headers
|
|
$this->headers();
|
|
|
|
edd_die();
|
|
}
|
|
|
|
/**
|
|
* Delete an option
|
|
*
|
|
* @since 2.5
|
|
* @param string $key The option_name to delete
|
|
* @return void
|
|
*/
|
|
protected function delete_data( $key ) {
|
|
global $wpdb;
|
|
$wpdb->delete( $wpdb->options, array( 'option_name' => $key ) );
|
|
}
|
|
|
|
}
|