laipower/wp-content/plugins/easy-digital-downloads/includes/admin/tools/class-edd-tools-recount-customer-stats.php

148 lines
2.8 KiB
PHP

<?php
/**
* Recount all cutomer stats
*
* This class handles batch processing of recounting all customer stats
*
* @subpackage Admin/Tools/EDD_Tools_Recount_Customer_Stats
* @copyright Copyright (c) 2015, Chris Klosowski
* @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_Customer_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 = 5;
/**
* Get the Export Data
*
* @since 2.5
* @global object $wpdb Used to query the database using the WordPress
* Database API
* @return bool True if results were found for this batch, false if not.
*/
public function get_data() {
$args = array(
'limit' => $this->per_step,
'offset' => $this->per_step * ( $this->step - 1 ),
'orderby' => 'id',
'order' => 'DESC',
);
$customers = edd_get_customers( $args );
if ( $customers ) {
foreach ( $customers as $customer ) {
$customer->recalculate_stats();
}
return true;
}
return false;
}
/**
* Return the calculated completion percentage
*
* @since 2.5
* @return int
*/
public function get_percentage_complete() {
$total = edd_count_customers();
$percentage = 100;
if( $total > 0 ) {
$percentage = ( ( $this->per_step * $this->step ) / $total ) * 100;
}
if( $percentage > 100 ) {
$percentage = 100;
}
return $percentage;
}
/**
* 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 ) { }
/**
* Process a step
*
* @since 2.5
* @return bool
*/
public function process_step() {
if ( ! $this->can_export() ) {
wp_die( __( 'You do not have permission to export data.', 'easy-digital-downloads' ), __( 'Error', 'easy-digital-downloads' ), array( 'response' => 403 ) );
}
$had_data = $this->get_data();
if( $had_data ) {
$this->done = false;
return true;
} else {
$this->done = true;
$this->message = __( 'Customer stats successfully recounted.', 'easy-digital-downloads' );
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();
}
}