• File: RevenueAttribution.php
  • Full Path: /home/matthif/www/wp-content/plugins/optinmonster/OMAPI/RevenueAttribution.php
  • Date Modified: 01/24/2025 1:58 PM
  • File size: 2.97 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php
/**
 * Revenue attribution class.
 *
 * @since 2.6.13
 *
 * @package OMAPI
 * @author  Thomas Griffin
 */

// Exit if accessed directly.
if ( ! defined'ABSPATH' ) ) {
    exit;
}

/**
 * The Revenue Attribution class.
 *
 * @since 2.6.13
 */
class OMAPI_RevenueAttribution {
    
/**
     * Holds the class object.
     *
     * @since 2.6.13
     *
     * @var object
     */
    
public static $instance;

    
/**
     * Path to the file.
     *
     * @since 2.6.13
     *
     * @var string
     */
    
public $file __FILE__;

    
/**
     * Holds the base class object.
     *
     * @since 2.6.13
     *
     * @var object
     */
    
public $base;

    
/**
     * Primary class constructor.
     *
     * @since 2.6.13
     */
    
public function __construct() {
        
// Set our object.
        
$this->set();
    }

    
/**
     * Sets our object instance and base class instance.
     *
     * @since 2.6.13
     */
    
public function set() {
        
self::$instance $this;
        
$this->base     OMAPI::get_instance();
    }

    
/**
     * Maybe stores revenue attribution data when a purchase is successful.
     *
     * @since 2.6.13
     *
     * @param array $data  An array of revenue attribution data to store.
     *
     * @return bool|WP_Error         True if successful, WP_Error or false otherwise.
     */
    
public function store$data = array() ) {
        
// If revenue attribution is not turned on, return early.
        
$ra $this->base->get_revenue_attribution();
        if ( empty( 
$ra['enabled'] ) || empty( $ra['currency'] ) ) {
            return 
false;
        }

        
// If we can't find the account ID, return early.
        
$accountId $this->base->get_option'accountId' );
        if ( empty( 
$accountId ) ) {
            return 
false;
        }

        
// Build and send the request.
        
$api OMAPI_Api::build'v2''revenue/' $accountId'POST' );

        return 
$api->request$data );
    }

    
/**
     * Returns revenue attribution data.
     *
     * @since 2.6.13
     *
     * @return array  An array of revenue attribution data.
     */
    
public function get_revenue_data() {
        
// If we don't have any cookies set for OM campaigns, return early.
        
if ( empty( $_COOKIE['_omra'] ) ) {
            return array();
        }

        
// If revenue attribution is not turned on, return early.
        
$ra $this->base->get_revenue_attribution();
        if ( empty( 
$ra['enabled'] ) || empty( $ra['currency'] ) ) {
            return array();
        }

        
// Loop through and prepare the campaign data. If it is empty, return early.
        
$campaign_data json_decodestripslashesrawurldecode$_COOKIE['_omra'] ) ), true );
        if ( empty( 
$campaign_data ) ) {
            return array();
        }

        
// Sanitize the campaign data before sending it back.
        
$sanitized_campaigns = array();
        foreach ( 
$campaign_data as $campaign_id => $action ) {
            
$sanitized_campaignsesc_html$campaign_id ) ] = esc_html$action );
        }

        
// Return the default revenue attribution data. Additional revenue
        // data should be returned from the integration itself (such as
        // the total, transaction ID, etc.).
        
return array(
            
'campaigns' => $sanitized_campaigns,
            
'currency'  => esc_html$ra['currency'] ),
            
'device'    => wp_is_mobile() ? 'mobile' 'desktop',
            
'type'      => 'sale',
        );
    }
}