updated plugin Easy Digital Downloads version 3.1.0.4

This commit is contained in:
2023-01-18 16:39:57 +00:00
committed by Gitium
parent ae8dabbd21
commit 6f8f73e860
77 changed files with 2262 additions and 681 deletions

View File

@ -370,102 +370,118 @@ class EDD_API_V2 extends EDD_API_V1 {
$sales = array();
if( ! user_can( $this->user_id, 'view_shop_reports' ) && ! $this->override ) {
if ( ! user_can( $this->user_id, 'view_shop_reports' ) && ! $this->override ) {
return $sales;
}
if( isset( $wp_query->query_vars['id'] ) ) {
if ( isset( $wp_query->query_vars['id'] ) ) {
$query = array();
$query[] = new EDD_Payment( $wp_query->query_vars['id'] );
} elseif( isset( $wp_query->query_vars['purchasekey'] ) ) {
$query[] = edd_get_order( $wp_query->query_vars['id'] );
} elseif ( isset( $wp_query->query_vars['purchasekey'] ) ) {
$query = array();
$query[] = edd_get_payment_by( 'key', $wp_query->query_vars['purchasekey'] );
} elseif( isset( $wp_query->query_vars['email'] ) ) {
$query = edd_get_payments( array( 'fields' => 'ids', 'meta_key' => '_edd_payment_user_email', 'meta_value' => $wp_query->query_vars['email'], 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'complete' ) );
$query[] = edd_get_order_by( 'payment_key', $wp_query->query_vars['purchasekey'] );
} elseif ( isset( $wp_query->query_vars['email'] ) ) {
$query = edd_get_orders(
array(
'type' => 'sale',
'email' => $wp_query->query_vars['email'],
'number' => $this->per_page(),
'offset' => ( $this->get_paged() - 1 ) * $this->per_page(),
'status__in' => edd_get_net_order_statuses(),
)
);
} else {
$query = edd_get_payments( array( 'fields' => 'ids', 'number' => $this->per_page(), 'page' => $this->get_paged(), 'status' => 'complete' ) );
$query = edd_get_orders(
array(
'type' => 'sale',
'number' => $this->per_page(),
'offset' => ( $this->get_paged() - 1 ) * $this->per_page(),
'status__in' => edd_get_net_order_statuses(),
)
);
}
if ( $query ) {
$i = 0;
foreach ( $query as $payment ) {
if ( is_numeric( $payment ) ) {
$payment = new EDD_Payment( $payment );
foreach ( $query as $order ) {
/** @var EDD\Orders\Order $order An Order object. */
$localized_time = edd_get_edd_timezone_equivalent_date_from_utc( EDD()->utils->date( $order->date_created ) );
$sales['sales'][ $i ]['ID'] = $order->get_number();
$sales['sales'][ $i ]['mode'] = $order->mode;
$sales['sales'][ $i ]['status'] = $order->status;
$sales['sales'][ $i ]['transaction_id'] = $order->get_transaction_id();
$sales['sales'][ $i ]['key'] = $order->payment_key;
$sales['sales'][ $i ]['subtotal'] = $order->subtotal;
$sales['sales'][ $i ]['tax'] = $order->tax;
$sales['sales'][ $i ]['total'] = $order->total;
$sales['sales'][ $i ]['gateway'] = $order->gateway;
$sales['sales'][ $i ]['customer_id'] = $order->customer_id;
$sales['sales'][ $i ]['user_id'] = $order->user_id;
$sales['sales'][ $i ]['email'] = $order->email;
$sales['sales'][ $i ]['date'] = $localized_time->copy()->format( 'Y-m-d H:i:s' );
$sales['sales'][ $i ]['date_utc'] = $order->date_created;
$fees = array();
$discounts = array();
foreach ( $order->adjustments as $adjustment ) {
switch ( $adjustment->type ) {
case 'fee':
$fees[] = array(
'amount' => $adjustment->total,
'label' => $adjustment->description,
'no_tax' => empty( $adjustment->tax ),
'type' => $adjustment->type,
'price_id' => null,
'download_id' => null,
'id' => $adjustment->type_key,
);
break;
case 'discount':
$discounts[ $adjustment->description ] = $adjustment->total;
break;
}
}
$payment_meta = $payment->get_meta();
$user_info = $payment->user_info;
$sales['sales'][ $i ]['ID'] = $payment->number;
$sales['sales'][ $i ]['mode'] = $payment->mode;
$sales['sales'][ $i ]['status'] = $payment->status;
$sales['sales'][ $i ]['transaction_id'] = ( ! empty( $payment->transaction_id ) ) ? $payment->transaction_id : null;
$sales['sales'][ $i ]['key'] = $payment->key;
$sales['sales'][ $i ]['subtotal'] = $payment->subtotal;
$sales['sales'][ $i ]['tax'] = $payment->tax;
$sales['sales'][ $i ]['fees'] = ( ! empty( $payment->fees ) ? $payment->fees : null );
$sales['sales'][ $i ]['total'] = $payment->total;
$sales['sales'][ $i ]['gateway'] = $payment->gateway;
$sales['sales'][ $i ]['customer_id'] = $payment->customer_id;
$sales['sales'][ $i ]['user_id'] = $payment->user_id;
$sales['sales'][ $i ]['email'] = $payment->email;
$sales['sales'][ $i ]['date'] = $payment->date;
$c = 0;
$discounts = ! empty( $payment->discounts ) ? explode( ',', $payment->discounts ) : array();
$discounts = array_map( 'trim', $discounts );
$discount_values = array();
foreach ( $discounts as $discount ) {
if ( 'none' === $discount ) { continue; }
$discount_values[ $discount ] = 0;
}
$cart_items = array();
foreach ( $payment->cart_details as $key => $item ) {
foreach ( $order->items as $item ) {
$cart_items[ $c ]['object_id'] = $item->id;
$cart_items[ $c ]['id'] = $item->product_id;
$cart_items[ $c ]['quantity'] = $item->quantity;
$cart_items[ $c ]['name'] = $item->product_name;
$cart_items[ $c ]['price'] = $item->total;
$item_id = isset( $item['id'] ) ? $item['id'] : $item;
$price = isset( $item['price'] ) ? $item['price'] : false; // The final price for the item
$item_price = isset( $item['item_price'] ) ? $item['item_price'] : false; // The price before discounts
// Keeping this here for backwards compatibility.
$cart_items[ $c ]['price_name'] = null === $item->price_id
? ''
: edd_get_price_name( $item->product_id, array( 'price_id' => $item->price_id ) );
$price_id = isset( $item['item_number']['options']['price_id'] ) ? $item['item_number']['options']['price_id'] : null;
$quantity = isset( $item['quantity'] ) && $item['quantity'] > 0 ? $item['quantity'] : 1;
if( ! $price ) {
// This function is only used on payments with near 1.0 cart data structure
$price = edd_get_download_final_price( $item_id, $user_info, null );
}
$price_name = '';
if ( isset( $item['item_number'] ) && isset( $item['item_number']['options'] ) ) {
$price_options = $item['item_number']['options'];
if ( isset( $price_options['price_id'] ) ) {
$price_name = edd_get_price_option_name( $item_id, $price_options['price_id'], $payment->ID );
// Check for any item level fees to include in the fees array.
foreach ( $item->adjustments as $adjustment ) {
if ( 'fee' === $adjustment->type ) {
$fees[] = array(
'amount' => $adjustment->total,
'label' => $adjustment->description,
'no_tax' => empty( $adjustment->tax ),
'type' => $adjustment->type,
'price_id' => $item->price_id,
'download_id' => $item->product_id,
'id' => $adjustment->type_key,
);
}
}
$cart_items[ $c ]['id'] = $item_id;
$cart_items[ $c ]['quantity'] = $quantity;
$cart_items[ $c ]['name'] = get_the_title( $item_id );
$cart_items[ $c ]['price'] = $price;
$cart_items[ $c ]['price_name'] = $price_name;
// Determine the discount amount for the item, if there is one
foreach ( $discount_values as $discount => $amount ) {
$item_discount = edd_get_cart_item_discount_amount( $item, $discount );
$discount_values[ $discount ] += $item_discount;
}
$c++;
}
$sales['sales'][ $i ]['discounts'] = ( ! empty( $discount_values ) ? $discount_values : null );
$sales['sales'][ $i ]['products'] = $cart_items;
$sales['sales'][ $i ]['fees'] = ! empty( $fees ) ? $fees : null;
$sales['sales'][ $i ]['discounts'] = ! empty( $discounts ) ? $discounts : null;
$i++;
}