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->sendRevenueCookie($statisticsClicks);
|
||||
$this->sendSubscriberCookie($subscriber);
|
||||
|
||||
$subscriberId = $subscriber->getId();
|
||||
if ($subscriberId) {
|
||||
$this->subscriberCookie->setSubscriberId($subscriberId);
|
||||
}
|
||||
|
||||
// track open event
|
||||
$this->opens->track($data, $displayImage = false);
|
||||
// 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(
|
||||
string $url,
|
||||
NewsletterEntity $newsletter,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Statistics\Track;
|
||||
|
||||
use MailPoet\Settings\TrackingConfig;
|
||||
use MailPoet\Util\Cookies;
|
||||
|
||||
class SubscriberCookie {
|
||||
@@ -12,13 +13,22 @@ class SubscriberCookie {
|
||||
/** @var Cookies */
|
||||
private $cookies;
|
||||
|
||||
/** @var TrackingConfig */
|
||||
private $trackingConfig;
|
||||
|
||||
public function __construct(
|
||||
Cookies $cookies
|
||||
Cookies $cookies,
|
||||
TrackingConfig $trackingConfig
|
||||
) {
|
||||
$this->cookies = $cookies;
|
||||
$this->trackingConfig = $trackingConfig;
|
||||
}
|
||||
|
||||
public function getSubscriberId(): ?int {
|
||||
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$subscriberId = $this->getSubscriberIdFromCookie(self::COOKIE_NAME);
|
||||
if ($subscriberId) {
|
||||
return $subscriberId;
|
||||
@@ -34,6 +44,10 @@ class SubscriberCookie {
|
||||
}
|
||||
|
||||
public function setSubscriberId(int $subscriberId): void {
|
||||
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->cookies->set(
|
||||
self::COOKIE_NAME,
|
||||
['subscriber_id' => $subscriberId],
|
||||
|
@@ -3,6 +3,8 @@
|
||||
namespace MailPoet\AutomaticEmails\WooCommerce\Events;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\TrackingConfig;
|
||||
use MailPoet\Statistics\Track\SubscriberCookie;
|
||||
use MailPoet\Util\Cookies;
|
||||
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
|
||||
@@ -43,8 +45,13 @@ class AbandonedCartPageVisitTrackerTest extends \MailPoetTest {
|
||||
'WC' => $wooCommerceMock,
|
||||
]);
|
||||
|
||||
$settings = $this->diContainer->get(SettingsController::class);
|
||||
$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() {
|
||||
@@ -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('delete')->with('mailpoet_abandoned_cart_tracking');
|
||||
|
||||
$settings = $this->diContainer->get(SettingsController::class);
|
||||
$pageVisitTracker = Stub::copy($this->pageVisitTracker, [
|
||||
'subscriberCookie' => new SubscriberCookie($cookiesMock),
|
||||
'subscriberCookie' => new SubscriberCookie($cookiesMock, new TrackingConfig($settings)),
|
||||
]);
|
||||
|
||||
$hourAgoTimestamp = $this->currentTime->getTimestamp() - 60 * 60;
|
||||
|
@@ -11,6 +11,8 @@ use MailPoet\Models\ScheduledTaskSubscriber;
|
||||
use MailPoet\Models\SendingQueue;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\TrackingConfig;
|
||||
use MailPoet\Statistics\Track\SubscriberCookie;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Util\Cookies;
|
||||
@@ -78,10 +80,11 @@ class AbandonedCartTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
public function testItGetsEventDetails() {
|
||||
$settings = $this->diContainer->get(SettingsController::class);
|
||||
$wp = new WPFunctions();
|
||||
$wcHelper = new WooCommerceHelper();
|
||||
$cookies = new Cookies();
|
||||
$subscriberCookie = new SubscriberCookie($cookies);
|
||||
$subscriberCookie = new SubscriberCookie($cookies, new TrackingConfig($settings));
|
||||
$event = new AbandonedCart(
|
||||
$wp,
|
||||
$wcHelper,
|
||||
@@ -275,10 +278,11 @@ class AbandonedCartTest extends \MailPoetTest {
|
||||
}
|
||||
|
||||
private function createAbandonedCartEmail() {
|
||||
$settings = $this->diContainer->get(SettingsController::class);
|
||||
return $this->make(AbandonedCart::class, [
|
||||
'wp' => $this->wp,
|
||||
'wooCommerceHelper' => $this->wooCommerceHelperMock,
|
||||
'subscriberCookie' => new SubscriberCookie(new Cookies()),
|
||||
'subscriberCookie' => new SubscriberCookie(new Cookies(), new TrackingConfig($settings)),
|
||||
'pageVisitTracker' => $this->pageVisitTrackerMock,
|
||||
'scheduler' => new AutomaticEmailScheduler(),
|
||||
]);
|
||||
|
Reference in New Issue
Block a user