Server IP : 172.67.158.161 / Your IP : 18.226.34.78 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/proc/thread-self/root/proc/self/root/proc/self/root/proc/thread-self/root/home/giankuin/thietke365.net/wp-content/plugins/mailpoet/lib/Analytics/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Analytics; if (!defined('ABSPATH')) exit; use MailPoet\Settings\SettingsController; use MailPoet\WP\Functions as WPFunctions; use MailPoetVendor\Carbon\Carbon; class Analytics { const SETTINGS_LAST_SENT_KEY = 'analytics_last_sent'; const SEND_AFTER_DAYS = 7; const ANALYTICS_FILTER = 'mailpoet_analytics'; /** @var Reporter */ private $reporter; /** @var SettingsController */ private $settings; /** @var WPFunctions */ private $wp; public function __construct( Reporter $reporter, SettingsController $settingsController ) { $this->reporter = $reporter; $this->settings = $settingsController; $this->wp = new WPFunctions; } /** @return array|null */ public function generateAnalytics() { if ($this->shouldSend()) { $data = $this->wp->applyFilters(self::ANALYTICS_FILTER, $this->reporter->getData()); $this->recordDataSent(); return $data; } return null; } /** @return bool */ public function isEnabled() { $analyticsSettings = $this->settings->get('analytics', []); return !empty($analyticsSettings['enabled']) === true; } public function setPublicId($newPublicId) { $currentPublicId = $this->settings->get('public_id'); if ($currentPublicId !== $newPublicId) { $this->settings->set('public_id', $newPublicId); $this->settings->set('new_public_id', 'true'); // Force user data to be resent $this->settings->delete(Analytics::SETTINGS_LAST_SENT_KEY); } } /** @return string */ public function getPublicId() { $publicId = $this->settings->get('public_id', ''); // if we didn't get the user public_id from the shop yet : we create one based on mixpanel distinct_id if (empty($publicId) && !empty($_COOKIE['mixpanel_distinct_id'])) { // the public id has to be diffent that mixpanel_distinct_id in order to be used on different browser $mixpanelDistinctId = md5(sanitize_text_field(wp_unslash($_COOKIE['mixpanel_distinct_id']))); $this->settings->set('public_id', $mixpanelDistinctId); $this->settings->set('new_public_id', 'true'); return $mixpanelDistinctId; } return $publicId; } /** * Returns true if a the public_id was added and update new_public_id to false * @return bool */ public function isPublicIdNew() { $newPublicId = $this->settings->get('new_public_id'); if ($newPublicId === 'true') { $this->settings->set('new_public_id', 'false'); return true; } return false; } private function shouldSend() { if (!$this->isEnabled()) { return false; } $lastSent = $this->settings->get(Analytics::SETTINGS_LAST_SENT_KEY); if (!$lastSent) { return true; } $lastSentCarbon = Carbon::createFromTimestamp(strtotime($lastSent))->addDays(Analytics::SEND_AFTER_DAYS); return $lastSentCarbon->isPast(); } private function recordDataSent() { $this->settings->set(Analytics::SETTINGS_LAST_SENT_KEY, Carbon::now()); } }