Marcel Kapfer
9c43bfc8f5
This is the case for the backend. Setting it to null yields to an early abortion in the addLibrary function.
78 lines
2.1 KiB
PHP
78 lines
2.1 KiB
PHP
<?php
|
|
|
|
namespace MMK2410\PlausibleAnalytics\Hooks;
|
|
|
|
use TYPO3\CMS\Core\Page\AssetCollector;
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
|
class PageRendererPreProcess
|
|
{
|
|
/** @var \TYPO3\CMS\Core\Page\AssetCollector */
|
|
private $assetCollector;
|
|
|
|
/** @var \TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController */
|
|
private $tsfe;
|
|
|
|
public function __construct(AssetCollector $assetCollector = null)
|
|
{
|
|
$this->assetCollector = $assetCollector ?? GeneralUtility::makeInstance(AssetCollector::class);
|
|
$this->tsfe = $GLOBALS['TSFE'] ?? null;
|
|
}
|
|
|
|
public function addLibrary(): void
|
|
{
|
|
if (!isset($this->tsfe)) {
|
|
return;
|
|
}
|
|
|
|
$domain = $this->getDomain();
|
|
$plausible = $this->getPlausibleURL();
|
|
|
|
if (isset($domain) && isset($plausible) && !$this->tsfe->isBackendUserLoggedIn()) {
|
|
GeneralUtility::makeInstance(AssetCollector::class)
|
|
->addJavaScript(
|
|
'plausible_analytics',
|
|
$plausible . '/js/plausible.js',
|
|
[
|
|
'async' => 'async',
|
|
'defer' => 'defer',
|
|
'data-domain' => $domain
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
protected function getPlausibleURL(): ?string
|
|
{
|
|
if (!isset($this->tsfe)) {
|
|
return null;
|
|
}
|
|
|
|
return $this->tsfe->getSite()->getConfiguration()['plausible_url'] ?? null;
|
|
}
|
|
|
|
protected function getDomain(): ?string
|
|
{
|
|
if (!isset($this->tsfe)) {
|
|
return null;
|
|
}
|
|
|
|
$domain = $this->tsfe->getSite()->getConfiguration()['plausible_domain'];
|
|
|
|
if (!empty($domain)) {
|
|
return $domain;
|
|
}
|
|
|
|
$base = $this->tsfe->getSite()->getConfiguration()['base'];
|
|
|
|
if (!isset($base)) {
|
|
return null;
|
|
}
|
|
|
|
if (strpos($base, 'http://') !== false || strpos($base, 'https://') !== false) {
|
|
return preg_replace('/https?:\/\/([^\/\n]*).*/', '$1', $base);
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
}
|