PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/mailpoet/lib/Statistics/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : /home/trave494/tiktechtok.org/wp-content/plugins/mailpoet/lib/Statistics/GATracking.php |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Statistics; if (!defined('ABSPATH')) exit; use MailPoet\Entities\NewsletterEntity; use MailPoet\Newsletter\Links\Links as NewsletterLinks; use MailPoet\Util\Helpers; use MailPoet\Util\SecondLevelDomainNames; use MailPoet\WP\Functions; class GATracking { /** @var SecondLevelDomainNames */ private $secondLevelDomainNames; /** @var NewsletterLinks */ private $newsletterLinks; /** @var Functions */ private $wp; public function __construct( NewsletterLinks $newsletterLinks, Functions $wp ) { $this->secondLevelDomainNames = new SecondLevelDomainNames(); $this->newsletterLinks = $newsletterLinks; $this->wp = $wp; } public function applyGATracking($renderedNewsletter, NewsletterEntity $newsletter, $internalHost = null) { if ($newsletter->getType() == NewsletterEntity::TYPE_NOTIFICATION_HISTORY && $newsletter->getParent() instanceof NewsletterEntity) { $parentNewsletter = $newsletter->getParent(); $field = $parentNewsletter->getGaCampaign(); } else { $field = $newsletter->getGaCampaign(); } return $this->addGAParamsToLinks($renderedNewsletter, $field, $internalHost); } private function addGAParamsToLinks($renderedNewsletter, $gaCampaign, $internalHost = null) { // join HTML and TEXT rendered body into a text string $content = Helpers::joinObject($renderedNewsletter); $extractedLinks = $this->newsletterLinks->extract($content); $processedLinks = $this->addParams($extractedLinks, $gaCampaign, $internalHost); list($content, $links) = $this->newsletterLinks->replace($content, $processedLinks); // split the processed body with hashed links back to HTML and TEXT list($renderedNewsletter['html'], $renderedNewsletter['text']) = Helpers::splitObject($content); return $renderedNewsletter; } private function addParams($extractedLinks, $gaCampaign, $internalHost = null) { $processedLinks = []; $params = [ 'utm_source' => 'mailpoet', 'utm_medium' => 'email', 'utm_source_platform' => 'mailpoet', ]; if ($gaCampaign) { $params['utm_campaign'] = $gaCampaign; } $internalHost = $internalHost ?: parse_url(home_url(), PHP_URL_HOST); $internalHost = $this->secondLevelDomainNames->get($internalHost); foreach ($extractedLinks as $extractedLink) { if ($extractedLink['type'] !== NewsletterLinks::LINK_TYPE_URL) { continue; } elseif (strpos((string)parse_url($extractedLink['link'], PHP_URL_HOST), $internalHost) === false) { // Process only internal links (i.e. pointing to current site) continue; } $link = $extractedLink['link']; // Do not overwrite existing query parameters $parsedUrl = parse_url($link); $linkParams = $params; if (isset($parsedUrl['query'])) { foreach (array_keys($params) as $param) { if (strpos($parsedUrl['query'], $param . '=') !== false) { unset($linkParams[$param]); } } } $processedLink = $this->wp->applyFilters( 'mailpoet_ga_tracking_link', $this->wp->addQueryArg($linkParams, $link), $extractedLink['link'], $linkParams, $extractedLink['type'] ); $processedLinks[$link] = [ 'type' => $extractedLink['type'], 'link' => $link, 'processed_link' => $processedLink, ]; } return $processedLinks; } }