Skip to content

Commit

Permalink
[FEATURE] Add handling for multiple trackers
Browse files Browse the repository at this point in the history
  • Loading branch information
astehlik committed Feb 21, 2019
1 parent 775f252 commit c99ce4e
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 9 deletions.
67 changes: 61 additions & 6 deletions Classes/UserFunc/Footer.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ public function contentPostProc_output($trackingCode, $localConfig) {
$trackingCode .= $this->getPiwikCustomVariables();
$trackingCode .= $this->getPiwikCustomDimensions();
$trackingCode .= $this->getPiwiksetUserId();
$trackingCode .= $this->getAdditionalTrackers();

if (!$this->useAsyncTrackingApi) {
$trackingCode .= "\t\t" . 'piwikTracker.trackPageView();';
Expand All @@ -141,12 +142,7 @@ public function contentPostProc_output($trackingCode, $localConfig) {
$template = str_replace('###IDSITE###', $conf['piwik_idsite'], $template);
$template = str_replace('###BEUSER###', $beUserLogin, $template);

if (strlen($this->piwikOptions['trackGoal'])) {
$template = str_replace('###TRACKING_IMAGE_URL###', htmlentities($this->piwikTracker->getUrlTrackGoal($this->piwikOptions['trackGoal'])), $template);
} else {
$currentPageTitle = $this->getCurrentPageTitle();
$template = str_replace('###TRACKING_IMAGE_URL###', htmlentities($this->piwikTracker->getUrlTrackPageView($currentPageTitle)), $template);
}
$template = str_replace('###TRACKING_IMAGES###', $this->buildTrackingImages(), $template);

if (isset($this->piwikOptions['includeJavaScript']) && !(bool)$this->piwikOptions['includeJavaScript']) {
$templateService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(MarkerBasedTemplateService::class);
Expand All @@ -165,6 +161,65 @@ function is_backend() {
return false;
}

/**
* @return string
*/
protected function buildTrackingImages()
{
$trackingImages = $this->buildTrackingImageTag($this->piwikTracker);

if (empty($this->piwikOptions['additionalTrackers.']) || !is_array($this->piwikOptions['additionalTrackers.'])) {
return $trackingImages;
}

foreach ($this->piwikOptions['additionalTrackers.'] as $trackerConfig) {
$addionalTrackerUrl = $trackerConfig['piwik_host'];
$addionalTrackerSiteId = (int)$trackerConfig['piwik_idsite'];
PiwikTracker::$URL = $addionalTrackerUrl;
$this->piwikTracker->setIdSite($addionalTrackerSiteId);
$trackingImages .= $this->buildTrackingImageTag($this->piwikTracker);
}

return $trackingImages;
}

/**
* @param PiwikTracker $piwikTracker
* @return string
*/
protected function buildTrackingImageTag(PiwikTracker $piwikTracker)
{
if (strlen($this->piwikOptions['trackGoal'])) {
$imageSrc = $piwikTracker->getUrlTrackGoal($this->piwikOptions['trackGoal']);
} else {
$currentPageTitle = $this->getCurrentPageTitle();
$imageSrc = $piwikTracker->getUrlTrackPageView($currentPageTitle);
}

return sprintf('<img src="%s" style="border:0" alt=""/>', htmlspecialchars($imageSrc)) . PHP_EOL;
}

protected function getAdditionalTrackers()
{
$additionalTrackerCode = '';
if (empty($this->piwikOptions['additionalTrackers.']) || !is_array($this->piwikOptions['additionalTrackers.'])) {
return $additionalTrackerCode;
}

foreach ($this->piwikOptions['additionalTrackers.'] as $trackerConfig) {
$addionalTrackerUrl = $trackerConfig['piwik_host'] . 'piwik.php';
$addionalTrackerSiteId = (int)$trackerConfig['piwik_idsite'];
$pushParameters = [
'addTracker',
$addionalTrackerUrl,
$addionalTrackerSiteId,
];
$additionalTrackerCode .= '_paq.push(' . json_encode($pushParameters, JSON_UNESCAPED_SLASHES) . ');' . PHP_EOL;
}

return $additionalTrackerCode;
}

/**
* Returns the page title set in the TSFE page renderer.
*
Expand Down
2 changes: 1 addition & 1 deletion Resources/Private/Templates/Piwik/tracker.html
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@

/* ]]> */
</script>
<noscript><p><img src="###TRACKING_IMAGE_URL###" style="border:0" alt=""/></p></noscript>
<noscript><p>###TRACKING_IMAGES###</p></noscript>
<!-- /Piwik -->
4 changes: 2 additions & 2 deletions Resources/Private/Templates/Piwik/tracker_async.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,5 +21,5 @@

/* ]]> */
</script>
<noscript><p><img src="###TRACKING_IMAGE_URL###" style="border:0" alt=""/></p></noscript>
<!-- /Piwik -->
<noscript><p>###TRACKING_IMAGES###</p></noscript>
<!-- /Piwik -->

0 comments on commit c99ce4e

Please sign in to comment.