installed plugin Easy Digital Downloads
version 3.1.0.3
This commit is contained in:
@ -0,0 +1,165 @@
|
||||
<?php
|
||||
/**
|
||||
* Customers Export Class
|
||||
*
|
||||
* This class handles customer export
|
||||
*
|
||||
* @package EDD
|
||||
* @subpackage Admin/Reports
|
||||
* @copyright Copyright (c) 2018, Easy Digital Downloads, LLC
|
||||
* @license http://opensource.org/licenses/gpl-2.0.php GNU Public License
|
||||
* @since 1.4.4
|
||||
*/
|
||||
|
||||
// Exit if accessed directly
|
||||
defined( 'ABSPATH' ) || exit;
|
||||
|
||||
/**
|
||||
* EDD_Customers_Export Class
|
||||
*
|
||||
* @since 1.4.4
|
||||
*/
|
||||
class EDD_Customers_Export extends EDD_Export {
|
||||
/**
|
||||
* Our export type. Used for export-type specific filters/actions
|
||||
*
|
||||
* @var string
|
||||
* @since 1.4.4
|
||||
*/
|
||||
public $export_type = 'customers';
|
||||
|
||||
/**
|
||||
* Set the export headers
|
||||
*
|
||||
* @since 1.4.4
|
||||
* @return void
|
||||
*/
|
||||
public function headers() {
|
||||
edd_set_time_limit();
|
||||
|
||||
$extra = '';
|
||||
|
||||
if ( ! empty( $_POST['edd_export_download'] ) ) {
|
||||
$extra = sanitize_title( get_the_title( absint( $_POST['edd_export_download'] ) ) ) . '-';
|
||||
}
|
||||
|
||||
nocache_headers();
|
||||
header( 'Content-Type: text/csv; charset=utf-8' );
|
||||
header( 'Content-Disposition: attachment; filename="' . apply_filters( 'edd_customers_export_filename', 'edd-export-' . $extra . $this->export_type . '-' . date( 'm-d-Y' ) ) . '.csv"' );
|
||||
header( 'Expires: 0' );
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the CSV columns
|
||||
*
|
||||
* @since 1.4.4
|
||||
* @return array $cols All the columns
|
||||
*/
|
||||
public function csv_cols() {
|
||||
if ( ! empty( $_POST['edd_export_download'] ) ) {
|
||||
$cols = array(
|
||||
'first_name' => __( 'First Name', 'easy-digital-downloads' ),
|
||||
'last_name' => __( 'Last Name', 'easy-digital-downloads' ),
|
||||
'email' => __( 'Email', 'easy-digital-downloads' ),
|
||||
'date' => __( 'Date Purchased', 'easy-digital-downloads' )
|
||||
);
|
||||
} else {
|
||||
|
||||
$cols = array();
|
||||
|
||||
if( 'emails' != $_POST['edd_export_option'] ) {
|
||||
$cols['name'] = __( 'Name', 'easy-digital-downloads' );
|
||||
}
|
||||
|
||||
$cols['email'] = __( 'Email', 'easy-digital-downloads' );
|
||||
|
||||
if( 'full' == $_POST['edd_export_option'] ) {
|
||||
$cols['purchases'] = __( 'Total Purchases', 'easy-digital-downloads' );
|
||||
$cols['amount'] = __( 'Total Purchased', 'easy-digital-downloads' ) . ' (' . html_entity_decode( edd_currency_filter( '' ) ) . ')';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return $cols;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Export Data
|
||||
*
|
||||
* @since 1.4.4
|
||||
* @global object $wpdb Used to query the database using the WordPress
|
||||
* Database API
|
||||
* @global object $edd_logs EDD Logs Object
|
||||
* @return array $data The data for the CSV file
|
||||
*/
|
||||
public function get_data() {
|
||||
|
||||
$data = array();
|
||||
|
||||
if ( ! empty( $_POST['edd_export_download'] ) ) {
|
||||
|
||||
$edd_logs = EDD()->debug_log;
|
||||
|
||||
$args = array(
|
||||
'post_parent' => absint( $_POST['edd_export_download'] ),
|
||||
'log_type' => 'sale',
|
||||
'nopaging' => true
|
||||
);
|
||||
|
||||
if( isset( $_POST['edd_price_option'] ) ) {
|
||||
$args['meta_query'] = array(
|
||||
array(
|
||||
'key' => '_edd_log_price_id',
|
||||
'value' => (int) $_POST['edd_price_option']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
$logs = $edd_logs->get_connected_logs( $args );
|
||||
|
||||
if ( $logs ) {
|
||||
foreach ( $logs as $log ) {
|
||||
$payment_id = get_post_meta( $log->ID, '_edd_log_payment_id', true );
|
||||
$user_info = edd_get_payment_meta_user_info( $payment_id );
|
||||
$data[] = array(
|
||||
'first_name' => $user_info['first_name'],
|
||||
'last_name' => $user_info['last_name'],
|
||||
'email' => $user_info['email'],
|
||||
'date' => $log->post_date
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
// Export all customers
|
||||
$customers = edd_get_customers( array(
|
||||
'limit' => 9999999,
|
||||
) );
|
||||
|
||||
$i = 0;
|
||||
|
||||
foreach ( $customers as $customer ) {
|
||||
|
||||
if( 'emails' != $_POST['edd_export_option'] ) {
|
||||
$data[$i]['name'] = $customer->name;
|
||||
}
|
||||
|
||||
$data[$i]['email'] = $customer->email;
|
||||
|
||||
if( 'full' == $_POST['edd_export_option'] ) {
|
||||
|
||||
$data[$i]['purchases'] = $customer->purchase_count;
|
||||
$data[$i]['amount'] = edd_format_amount( $customer->purchase_value );
|
||||
|
||||
}
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
$data = apply_filters( 'edd_export_get_data', $data );
|
||||
$data = apply_filters( 'edd_export_get_data_' . $this->export_type, $data );
|
||||
|
||||
return $data;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user