Move cookie tracking permission check to subscriber cookie service

[MAILPOET-3924]
This commit is contained in:
Jan Jakes
2021-12-10 13:58:43 +01:00
committed by Veljko V
parent f9cd7901af
commit 4ef2d4ed94
4 changed files with 37 additions and 12 deletions

View File

@@ -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,

View File

@@ -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],

View File

@@ -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;

View File

@@ -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(),
]);