Move cookie tracking permission check to subscriber cookie service
[MAILPOET-3924]
This commit is contained in:
@@ -107,7 +107,12 @@ class Clicks {
|
|||||||
}
|
}
|
||||||
$this->statisticsClicksRepository->flush();
|
$this->statisticsClicksRepository->flush();
|
||||||
$this->sendRevenueCookie($statisticsClicks);
|
$this->sendRevenueCookie($statisticsClicks);
|
||||||
$this->sendSubscriberCookie($subscriber);
|
|
||||||
|
$subscriberId = $subscriber->getId();
|
||||||
|
if ($subscriberId) {
|
||||||
|
$this->subscriberCookie->setSubscriberId($subscriberId);
|
||||||
|
}
|
||||||
|
|
||||||
// track open event
|
// track open event
|
||||||
$this->opens->track($data, $displayImage = false);
|
$this->opens->track($data, $displayImage = false);
|
||||||
// Update engagement date
|
// Update engagement date
|
||||||
@@ -133,12 +138,6 @@ class Clicks {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private function sendSubscriberCookie($subscriber) {
|
|
||||||
if ($this->trackingConfig->isCookieTrackingEnabled()) {
|
|
||||||
$this->subscriberCookie->setSubscriberId($subscriber->getId());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public function processUrl(
|
public function processUrl(
|
||||||
string $url,
|
string $url,
|
||||||
NewsletterEntity $newsletter,
|
NewsletterEntity $newsletter,
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Statistics\Track;
|
namespace MailPoet\Statistics\Track;
|
||||||
|
|
||||||
|
use MailPoet\Settings\TrackingConfig;
|
||||||
use MailPoet\Util\Cookies;
|
use MailPoet\Util\Cookies;
|
||||||
|
|
||||||
class SubscriberCookie {
|
class SubscriberCookie {
|
||||||
@@ -12,13 +13,22 @@ class SubscriberCookie {
|
|||||||
/** @var Cookies */
|
/** @var Cookies */
|
||||||
private $cookies;
|
private $cookies;
|
||||||
|
|
||||||
|
/** @var TrackingConfig */
|
||||||
|
private $trackingConfig;
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
Cookies $cookies
|
Cookies $cookies,
|
||||||
|
TrackingConfig $trackingConfig
|
||||||
) {
|
) {
|
||||||
$this->cookies = $cookies;
|
$this->cookies = $cookies;
|
||||||
|
$this->trackingConfig = $trackingConfig;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getSubscriberId(): ?int {
|
public function getSubscriberId(): ?int {
|
||||||
|
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
$subscriberId = $this->getSubscriberIdFromCookie(self::COOKIE_NAME);
|
$subscriberId = $this->getSubscriberIdFromCookie(self::COOKIE_NAME);
|
||||||
if ($subscriberId) {
|
if ($subscriberId) {
|
||||||
return $subscriberId;
|
return $subscriberId;
|
||||||
@@ -34,6 +44,10 @@ class SubscriberCookie {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setSubscriberId(int $subscriberId): void {
|
public function setSubscriberId(int $subscriberId): void {
|
||||||
|
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$this->cookies->set(
|
$this->cookies->set(
|
||||||
self::COOKIE_NAME,
|
self::COOKIE_NAME,
|
||||||
['subscriber_id' => $subscriberId],
|
['subscriber_id' => $subscriberId],
|
||||||
|
@@ -3,6 +3,8 @@
|
|||||||
namespace MailPoet\AutomaticEmails\WooCommerce\Events;
|
namespace MailPoet\AutomaticEmails\WooCommerce\Events;
|
||||||
|
|
||||||
use Codeception\Stub;
|
use Codeception\Stub;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
use MailPoet\Settings\TrackingConfig;
|
||||||
use MailPoet\Statistics\Track\SubscriberCookie;
|
use MailPoet\Statistics\Track\SubscriberCookie;
|
||||||
use MailPoet\Util\Cookies;
|
use MailPoet\Util\Cookies;
|
||||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||||
@@ -43,8 +45,13 @@ class AbandonedCartPageVisitTrackerTest extends \MailPoetTest {
|
|||||||
'WC' => $wooCommerceMock,
|
'WC' => $wooCommerceMock,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
$settings = $this->diContainer->get(SettingsController::class);
|
||||||
$this->sessionStore = [];
|
$this->sessionStore = [];
|
||||||
$this->pageVisitTracker = new AbandonedCartPageVisitTracker($this->wp, $wooCommerceHelperMock, new SubscriberCookie(new Cookies()));
|
$this->pageVisitTracker = new AbandonedCartPageVisitTracker(
|
||||||
|
$this->wp,
|
||||||
|
$wooCommerceHelperMock,
|
||||||
|
new SubscriberCookie(new Cookies(), new TrackingConfig($settings))
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItSetsTimestampWhenTrackingStarted() {
|
public function testItSetsTimestampWhenTrackingStarted() {
|
||||||
@@ -103,8 +110,9 @@ class AbandonedCartPageVisitTrackerTest extends \MailPoetTest {
|
|||||||
$cookiesMock->expects($this->once())->method('set')->with('mailpoet_subscriber', ['subscriber_id' => '123']);
|
$cookiesMock->expects($this->once())->method('set')->with('mailpoet_subscriber', ['subscriber_id' => '123']);
|
||||||
$cookiesMock->expects($this->once())->method('delete')->with('mailpoet_abandoned_cart_tracking');
|
$cookiesMock->expects($this->once())->method('delete')->with('mailpoet_abandoned_cart_tracking');
|
||||||
|
|
||||||
|
$settings = $this->diContainer->get(SettingsController::class);
|
||||||
$pageVisitTracker = Stub::copy($this->pageVisitTracker, [
|
$pageVisitTracker = Stub::copy($this->pageVisitTracker, [
|
||||||
'subscriberCookie' => new SubscriberCookie($cookiesMock),
|
'subscriberCookie' => new SubscriberCookie($cookiesMock, new TrackingConfig($settings)),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
$hourAgoTimestamp = $this->currentTime->getTimestamp() - 60 * 60;
|
$hourAgoTimestamp = $this->currentTime->getTimestamp() - 60 * 60;
|
||||||
|
@@ -11,6 +11,8 @@ use MailPoet\Models\ScheduledTaskSubscriber;
|
|||||||
use MailPoet\Models\SendingQueue;
|
use MailPoet\Models\SendingQueue;
|
||||||
use MailPoet\Models\Subscriber;
|
use MailPoet\Models\Subscriber;
|
||||||
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
||||||
|
use MailPoet\Settings\SettingsController;
|
||||||
|
use MailPoet\Settings\TrackingConfig;
|
||||||
use MailPoet\Statistics\Track\SubscriberCookie;
|
use MailPoet\Statistics\Track\SubscriberCookie;
|
||||||
use MailPoet\Tasks\Sending as SendingTask;
|
use MailPoet\Tasks\Sending as SendingTask;
|
||||||
use MailPoet\Util\Cookies;
|
use MailPoet\Util\Cookies;
|
||||||
@@ -78,10 +80,11 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testItGetsEventDetails() {
|
public function testItGetsEventDetails() {
|
||||||
|
$settings = $this->diContainer->get(SettingsController::class);
|
||||||
$wp = new WPFunctions();
|
$wp = new WPFunctions();
|
||||||
$wcHelper = new WooCommerceHelper();
|
$wcHelper = new WooCommerceHelper();
|
||||||
$cookies = new Cookies();
|
$cookies = new Cookies();
|
||||||
$subscriberCookie = new SubscriberCookie($cookies);
|
$subscriberCookie = new SubscriberCookie($cookies, new TrackingConfig($settings));
|
||||||
$event = new AbandonedCart(
|
$event = new AbandonedCart(
|
||||||
$wp,
|
$wp,
|
||||||
$wcHelper,
|
$wcHelper,
|
||||||
@@ -275,10 +278,11 @@ class AbandonedCartTest extends \MailPoetTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private function createAbandonedCartEmail() {
|
private function createAbandonedCartEmail() {
|
||||||
|
$settings = $this->diContainer->get(SettingsController::class);
|
||||||
return $this->make(AbandonedCart::class, [
|
return $this->make(AbandonedCart::class, [
|
||||||
'wp' => $this->wp,
|
'wp' => $this->wp,
|
||||||
'wooCommerceHelper' => $this->wooCommerceHelperMock,
|
'wooCommerceHelper' => $this->wooCommerceHelperMock,
|
||||||
'subscriberCookie' => new SubscriberCookie(new Cookies()),
|
'subscriberCookie' => new SubscriberCookie(new Cookies(), new TrackingConfig($settings)),
|
||||||
'pageVisitTracker' => $this->pageVisitTrackerMock,
|
'pageVisitTracker' => $this->pageVisitTrackerMock,
|
||||||
'scheduler' => new AutomaticEmailScheduler(),
|
'scheduler' => new AutomaticEmailScheduler(),
|
||||||
]);
|
]);
|
||||||
|
Reference in New Issue
Block a user