• File: Output.php
  • Full Path: /home/matthif/www/wp-content/plugins/optinmonster/OMAPI/EasyDigitalDownloads/Output.php
  • Date Modified: 01/24/2025 1:58 PM
  • File size: 2.32 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?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 __constructOMAPI_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;
    }
}