Add service for cookies handling & encode them with JSON
[PREMIUM-121]
This commit is contained in:
@ -5,6 +5,7 @@ use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Newsletter\Shortcodes\Categories\Link;
|
||||
use MailPoet\Newsletter\Shortcodes\Shortcodes;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Util\Cookies;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
if (!defined('ABSPATH')) exit;
|
||||
@ -20,8 +21,12 @@ class Clicks {
|
||||
/** @var SettingsController */
|
||||
private $settings_controller;
|
||||
|
||||
public function __construct(SettingsController $settings_controller) {
|
||||
/** @var Cookies */
|
||||
private $cookies;
|
||||
|
||||
public function __construct(SettingsController $settings_controller, Cookies $cookies) {
|
||||
$this->settings_controller = $settings_controller;
|
||||
$this->cookies = $cookies;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -57,27 +62,31 @@ class Clicks {
|
||||
|
||||
private function sendRevenueCookie(StatisticsClicks $clicks) {
|
||||
if ($this->settings_controller->get('woocommerce.accept_cookie_revenue_tracking.enabled')) {
|
||||
setcookie(
|
||||
$this->cookies->set(
|
||||
self::REVENUE_TRACKING_COOKIE_NAME,
|
||||
serialize([
|
||||
[
|
||||
'statistics_clicks' => $clicks->id,
|
||||
'created_at' => time(),
|
||||
]),
|
||||
time() + self::REVENUE_TRACKING_COOKIE_EXPIRY,
|
||||
'/'
|
||||
],
|
||||
[
|
||||
'expires' => time() + self::REVENUE_TRACKING_COOKIE_EXPIRY,
|
||||
'path' => '/',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
private function sendAbandonedCartCookie($subscriber) {
|
||||
if ($this->settings_controller->get('woocommerce.accept_cookie_revenue_tracking.enabled')) {
|
||||
setcookie(
|
||||
$this->cookies->set(
|
||||
self::ABANDONED_CART_COOKIE_NAME,
|
||||
serialize([
|
||||
[
|
||||
'subscriber_id' => $subscriber->id,
|
||||
]),
|
||||
time() + self::ABANDONED_CART_COOKIE_EXPIRY,
|
||||
'/'
|
||||
],
|
||||
[
|
||||
'expires' => time() + self::ABANDONED_CART_COOKIE_EXPIRY,
|
||||
'path' => '/',
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ namespace MailPoet\Statistics\Track;
|
||||
use MailPoet\Models\StatisticsClicks;
|
||||
use MailPoet\Models\StatisticsWooCommercePurchases;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Util\Cookies;
|
||||
use MailPoet\WooCommerce\Helper;
|
||||
use WC_Order;
|
||||
|
||||
@ -15,8 +16,12 @@ class WooCommercePurchases {
|
||||
/** @var Helper */
|
||||
private $woocommerce_helper;
|
||||
|
||||
function __construct(Helper $woocommerce_helper) {
|
||||
/** @var Cookies */
|
||||
private $cookies;
|
||||
|
||||
function __construct(Helper $woocommerce_helper, Cookies $cookies) {
|
||||
$this->woocommerce_helper = $woocommerce_helper;
|
||||
$this->cookies = $cookies;
|
||||
}
|
||||
|
||||
function trackPurchase($id, $use_cookies = true) {
|
||||
@ -61,12 +66,12 @@ class WooCommercePurchases {
|
||||
}
|
||||
|
||||
private function getSubscriberEmailFromCookie() {
|
||||
$click_cookie = $this->getClickCookie();
|
||||
if (!$click_cookie) {
|
||||
$cookie_data = $this->cookies->get(Clicks::REVENUE_TRACKING_COOKIE_NAME);
|
||||
if (!$cookie_data) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$click = StatisticsClicks::findOne($click_cookie['statistics_clicks']);
|
||||
$click = StatisticsClicks::findOne($cookie_data['statistics_clicks']);
|
||||
if (!$click) {
|
||||
return null;
|
||||
}
|
||||
@ -77,11 +82,4 @@ class WooCommercePurchases {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private function getClickCookie() {
|
||||
if (empty($_COOKIE[Clicks::REVENUE_TRACKING_COOKIE_NAME])) {
|
||||
return null;
|
||||
}
|
||||
return unserialize($_COOKIE[Clicks::REVENUE_TRACKING_COOKIE_NAME]);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user