geno/wp-content/plugins/mailpoet/lib/Statistics/Track/PageViewCookie.php
2024-02-01 11:54:18 +00:00

58 lines
1.3 KiB
PHP

<?php declare(strict_types = 1);
namespace MailPoet\Statistics\Track;
if (!defined('ABSPATH')) exit;
use MailPoet\Settings\TrackingConfig;
use MailPoet\Util\Cookies;
class PageViewCookie {
const COOKIE_NAME = 'mailpoet_page_view';
const COOKIE_EXPIRY = 10 * 365 * 24 * 60 * 60; // 10 years (~ no expiry)
/** @var Cookies */
private $cookies;
/** @var TrackingConfig */
private $trackingConfig;
public function __construct(
Cookies $cookies,
TrackingConfig $trackingConfig
) {
$this->cookies = $cookies;
$this->trackingConfig = $trackingConfig;
}
public function getPageViewTimestamp(): ?int {
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
return null;
}
return $this->getTimestampCookie(self::COOKIE_NAME);
}
public function setPageViewTimestamp(int $timestamp): void {
if (!$this->trackingConfig->isCookieTrackingEnabled()) {
return;
}
$this->cookies->set(
self::COOKIE_NAME,
['timestamp' => $timestamp],
[
'expires' => time() + self::COOKIE_EXPIRY,
'path' => '/',
]
);
}
private function getTimestampCookie(string $cookieName): ?int {
$data = $this->cookies->get($cookieName);
return is_array($data) && $data['timestamp']
? (int)$data['timestamp']
: null;
}
}