laipower/wp-content/plugins/easy-digital-downloads/includes/admin/reporting/class-export-customers.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;
}
}