Current Path : /storage/v11800/testtest/public_html/wp-content/plugins/customer-reviews-woocommerce/ |
Linux v11800 5.3.0-1023-aws #25~18.04.1-Ubuntu SMP Fri Jun 5 15:19:18 UTC 2020 aarch64
|
Current File : /storage/v11800/testtest/public_html/wp-content/plugins/customer-reviews-woocommerce/class-cr-referrals.php |
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if ( ! class_exists( 'CR_Referrals' ) ) :
class CR_Referrals {
public function __construct() {
// Tracking of referrals only when referrals tracking is enabled
if ( 'yes' === get_option( 'ivole_referrals_tracking', 'no' ) ) {
// Track referrals
add_filter( 'query_vars', array( $this, 'referral_session' ) );
add_action( 'parse_query', array( $this, 'check_referral' ) );
// Trigger for new order
add_action( 'woocommerce_checkout_update_order_meta', array( $this, 'update_order_meta' ), 10, 2 );
// Triggers for paid orders
add_action( 'woocommerce_order_status_processing', array( $this, 'referral_trigger' ) );
add_action( 'woocommerce_order_status_completed', array( $this, 'referral_trigger' ) );
}
}
public function referral_trigger( $order_id ) {
if( $order_id ) {
$order = wc_get_order( $order_id );
if ( $order ) {
$referral_session = $order->get_meta( '_cr_referral_session', true );
if( $referral_session ) {
$license_key = get_option( 'ivole_license_key', '' );
if( $license_key ) {
$order_status = $order->get_status();
if( 'processing' === $order_status || 'completed' === $order_status ) {
$customer_email = '';
$customer_first_name = '';
$customer_last_name = '';
$order_date = '';
$order_currency = '';
$user = NULL;
$shipping_country = apply_filters( 'woocommerce_get_base_location', get_option( 'woocommerce_default_country' ) );
$temp_shipping_country = '';
//check if registered customers option is used
$registered_customers = false;
if( 'yes' === get_option( 'ivole_registered_customers', 'no' ) ) {
$registered_customers = true;
}
// get information about the order
if( method_exists( $order, 'get_billing_email' ) ) {
// get order details
if( $registered_customers ) {
$user = $order->get_user();
if( $user ) {
$customer_email = $user->user_email;
} else {
$customer_email = $order->get_billing_email();
}
} else {
$customer_email = $order->get_billing_email();
}
$customer_first_name = $order->get_billing_first_name();
$customer_last_name = $order->get_billing_last_name();
$order_date = date_i18n( 'd.m.Y', strtotime( $order->get_date_created() ) );
$order_currency = $order->get_currency();
$temp_shipping_country = $order->get_shipping_country();
if( strlen( $temp_shipping_country ) > 0 ) {
$shipping_country = $temp_shipping_country;
}
//
$data = array(
'licenseKey' => $license_key,
'shopDomain' => Ivole_Email::get_blogurl(),
'referralSession' => $referral_session,
'order' => array(
'id' => strval( $order_id ),
'customer' => array(
'firstname' => $customer_first_name,
'lastname' => $customer_last_name
),
'date' => $order_date,
'currency' => $order_currency,
'country' => $shipping_country,
'total' => $order->get_total()
)
);
$api_url = 'https://api.cusrev.com/v1/production/referral';
$data_string = json_encode( $data );
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $api_url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen( $data_string ) )
);
$result = curl_exec( $ch );
}
}
}
}
}
}
}
public function referral_session( $qvars ) {
$qvars[] = 'referral_session';
return $qvars;
}
public function check_referral( $wp_query ) {
$referral_session = get_query_var( 'referral_session', '' );
$expires = 30 * DAY_IN_SECONDS; // 30 days
$domain = defined( 'COOKIE_DOMAIN' ) ? COOKIE_DOMAIN : parse_url( get_option( 'siteurl' ), PHP_URL_HOST );
if( $referral_session ) {
//error_log( print_r( $referral_session, true ) );
setcookie( 'cr_referral_session', strval( $referral_session ), array(
'expires' => time() + $expires,
'path' => '/',
'domain' => $domain,
'samesite' => 'Lax' )
);
}
}
public function update_order_meta( $order_id, $data ) {
if( $order_id ) {
$order = wc_get_order( $order_id );
if( $order && isset( $_COOKIE['cr_referral_session'] ) ) {
// If the referral cookie is present, save it as a meta field in the order
$order->update_meta_data( '_cr_referral_session', sanitize_text_field( $_COOKIE['cr_referral_session'] ) );
$order->save();
}
}
}
}
endif;