166 lines
4.0 KiB
PHP
166 lines
4.0 KiB
PHP
|
<?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;
|
||
|
}
|
||
|
}
|