117 lines
2.3 KiB
PHP
117 lines
2.3 KiB
PHP
<?php
|
|
/**
|
|
* EasyDigitalDownloads Output class.
|
|
*
|
|
* @since 2.8.0
|
|
*
|
|
* @package OMAPI
|
|
* @author Gabriel Oliveira
|
|
*/
|
|
|
|
// Exit if accessed directly.
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit;
|
|
}
|
|
|
|
/**
|
|
* EasyDigitalDownloads Output class.
|
|
*
|
|
* @since 2.8.0
|
|
*/
|
|
class OMAPI_EasyDigitalDownloads_Output {
|
|
|
|
/**
|
|
* The OMAPI_EasyDigitalDownloads instance.
|
|
*
|
|
* @since 2.8.0
|
|
*
|
|
* @var OMAPI_EasyDigitalDownloads
|
|
*/
|
|
public $edd;
|
|
|
|
/**
|
|
* Constructor
|
|
*
|
|
* @since 2.13.0
|
|
*
|
|
* @param OMAPI_EasyDigitalDownloads $edd
|
|
*/
|
|
public function __construct( OMAPI_EasyDigitalDownloads $edd ) {
|
|
$this->edd = $edd;
|
|
}
|
|
|
|
/**
|
|
* Returns the payload EDD needs to use in its Display Rules.
|
|
*
|
|
* @since 2.8.0
|
|
*
|
|
* @return array The
|
|
*/
|
|
public function display_rules_data() {
|
|
$cart = $this->get_cart();
|
|
$user_id = get_current_user_id();
|
|
$purchased_products = edd_get_users_purchased_products( $user_id );
|
|
$cart['customer'] = null;
|
|
|
|
if ( ! empty( $purchased_products ) ) {
|
|
$customer_products = array_map(
|
|
function ( $product ) {
|
|
return $product->ID;
|
|
},
|
|
$purchased_products
|
|
);
|
|
|
|
$cart['customer'] = array(
|
|
'products' => $customer_products,
|
|
'stats' => edd_get_purchase_stats_by_user( $user_id ),
|
|
);
|
|
}
|
|
|
|
return $cart;
|
|
}
|
|
|
|
/**
|
|
* Retrieve the cart from EDD
|
|
*
|
|
* @since 2.8.0.
|
|
*
|
|
* @return array An array of EDD cart data.
|
|
*/
|
|
public function get_cart() {
|
|
// Bail if EDD isn't currently active.
|
|
if ( ! $this->edd->is_active() ) {
|
|
return array();
|
|
}
|
|
|
|
// Check if EDD is the minimum version.
|
|
if ( ! $this->edd->is_minimum_version() ) {
|
|
return array();
|
|
}
|
|
|
|
$edd_cart = EDD()->cart;
|
|
|
|
$cart = array();
|
|
$cart['discounts'] = $edd_cart->get_discounts();
|
|
$cart['quantity'] = $edd_cart->get_quantity();
|
|
$cart['subtotal'] = $edd_cart->get_subtotal();
|
|
$cart['total'] = $edd_cart->get_total();
|
|
|
|
// Filter out items by leaving only necessary fields
|
|
$cart['items'] = array_map(
|
|
function ( $edd_item ) {
|
|
return array(
|
|
'id' => $edd_item['id'],
|
|
'quantity' => $edd_item['quantity'],
|
|
'discount' => $edd_item['discount'],
|
|
'subtotal' => $edd_item['subtotal'],
|
|
'price' => $edd_item['price'],
|
|
'item_price' => $edd_item['item_price'],
|
|
);
|
|
},
|
|
$edd_cart->get_contents_details()
|
|
);
|
|
|
|
return $cart;
|
|
}
|
|
}
|