1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
|
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\SitesManager\SiteContentDetection;
use Piwik\API\Request;
use Piwik\Piwik;
use Piwik\SiteContentDetector;
use Piwik\Url;
use Piwik\View;
class GoogleTagManager extends SiteContentDetectionAbstract
{
public static function getName(): string
{
return Piwik::translate('SitesManager_SiteWithoutDataGoogleTagManager');
}
public static function getIcon(): string
{
return './plugins/SitesManager/images/gtm.svg';
}
public static function getContentType(): int
{
return self::TYPE_TRACKER;
}
public static function getInstructionUrl(): ?string
{
return Url::addCampaignParametersToMatomoLink('https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/');
}
public static function getPriority(): int
{
return 20;
}
public function isDetected(?string $data = null, ?array $headers = null): bool
{
$needle = 'gtm.start';
if (strpos($data, $needle) !== false) {
return true;
}
if (strpos($data, 'gtm.js') !== false) {
return true;
}
$tests = ["/googletagmanager/i"];
foreach ($tests as $test) {
if (preg_match($test, $data) === 1) {
return true;
}
}
return false;
}
public function renderInstructionsTab(SiteContentDetector $detector): string
{
$piwikUrl = Url::getCurrentUrlWithoutFileName();
$jsTag = Request::processRequest(
'SitesManager.getJavascriptTag',
[
'idSite' => \Piwik\Request::fromRequest()->getIntegerParameter('idSite'),
'piwikUrl' => $piwikUrl,
]
);
$view = new View('@SitesManager/_gtmTabInstructions');
$view->wasDetected = $detector->wasDetected(self::getId());
$view->jsTag = $jsTag;
$view->sendHeadersWhenRendering = false;
return $view->render();
}
public function renderOthersInstruction(SiteContentDetector $detector): string
{
if ($detector->wasDetected(self::getId())) {
return ''; // don't show on others page if tab is being displayed
}
return sprintf(
'<p>%s</p>',
Piwik::translate(
'SitesManager_SiteWithoutDataGoogleTagManagerDescription',
[
Url::getExternalLinkTag('https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager'),
'</a>',
]
)
);
}
}
|