assetCollector = $assetCollector ?? GeneralUtility::makeInstance(AssetCollector::class); $this->tsfe = $GLOBALS['TSFE']; } public function addLibrary(): void { $domain = $this->getDomain(); $plausible = $this->getPlausibleURL(); if (isset($domain) && isset($plausible)) { 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; } } }