diff --git a/lib/DI/ContainerConfigurator.php b/lib/DI/ContainerConfigurator.php index d4ceaf161d..9e89b8a86e 100644 --- a/lib/DI/ContainerConfigurator.php +++ b/lib/DI/ContainerConfigurator.php @@ -246,6 +246,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Router\Endpoints\Track::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\Track\Clicks::class); $container->autowire(\MailPoet\Statistics\Track\Opens::class)->setPublic(true); + $container->autowire(\MailPoet\Statistics\Track\SubscriberCookie::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\Track\WooCommercePurchases::class); $container->autowire(\MailPoet\Statistics\Track\Unsubscribes::class)->setPublic(true); $container->autowire(\MailPoet\Statistics\StatisticsFormsRepository::class)->setPublic(true); diff --git a/lib/Statistics/Track/SubscriberCookie.php b/lib/Statistics/Track/SubscriberCookie.php new file mode 100644 index 0000000000..c0db649df2 --- /dev/null +++ b/lib/Statistics/Track/SubscriberCookie.php @@ -0,0 +1,37 @@ +cookies = $cookies; + } + + public function getSubscriberId(): ?int { + $data = $this->cookies->get(self::COOKIE_NAME); + return is_array($data) && $data['subscriber_id'] + ? (int)$data['subscriber_id'] + : null; + } + + public function setSubscriberId(int $subscriberId): void { + $this->cookies->set( + self::COOKIE_NAME, + ['subscriber_id' => $subscriberId], + [ + 'expires' => time() + self::COOKIE_EXPIRY, + 'path' => '/', + ] + ); + } +}