includes/modals/pixel_modal.php
<?php
function brivacia_install_url(): string {
$https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
|| (($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https');
$scheme = $https ? 'https' : 'http';
$host = $_SERVER['HTTP_HOST'] ?? 'example.com';
$dir = str_replace('\\', '/', dirname($_SERVER['SCRIPT_NAME'] ?? '/'));
$dir = $dir === '/' ? '' : rtrim($dir, '/');
return $scheme . '://' . $host . $dir;
}
$installUrl = brivacia_install_url();
$sites = brivacia_sites();
$totalSites = count($sites);
?>
<dialog class="modal" data-prism id="pixel-modal">
<div>
<h2><?= h(t('pixel.title', ['instance' => brivacia_setting('dashboard.instance_name', 'Brivacia')])) ?></h2>
<p><?= t('pixel.help') ?></p>
<p><?= t('pixel.help.server') ?></p>
<p><?= t('pixel.help.auto') ?></p>
<div class="pixel-tabs" aria-label="<?= h(t('pixel.tabs')) ?>">
<input type="radio" id="pixel-tab-html" name="pixel-tab" checked>
<label for="pixel-tab-html"><?= h(t('pixel.tab.html')) ?></label>
<input type="radio" id="pixel-tab-php" name="pixel-tab">
<label for="pixel-tab-php"><?= h(t('pixel.tab.php')) ?></label>
<div>
<p><?= t('pixel.html.help') ?></p>
<?php
$siteNumber = 0;
?>
<?php foreach ($sites as $code => $domain): ?>
<?php
$siteNumber++;
$siteCode = (string)$code;
$siteLabel = (string)($domain ?: $code);
$pixelHtml = <<<HTML
<script>
(new Image()).src =
'{$installUrl}/api/pixel.php?site={$siteCode}' +
'&page='+encodeURIComponent(location.pathname||'/') +
'&lang='+encodeURIComponent(document.documentElement.lang||'') +
'&title='+encodeURIComponent(document.title||'') +
'&url='+encodeURIComponent(location.pathname||'/') +
'&ref='+encodeURIComponent(document.referrer||'');
</script>
HTML;
?>
<section>
<header>
<h3><?= h(t('pixel.site')) ?> <?= h($siteLabel) ?></h3>
<?php if ($totalSites > 1): ?>
<span><?= $siteNumber ?>/<?= $totalSites ?></span>
<?php endif; ?>
</header>
<pre class="language-markup line-numbers match-braces" data-prismjs-copy="<?= h(t('ui.copy.code')) ?>" data-prismjs-copy-error="<?= h(t('ui.copy.code.error')) ?>" data-prismjs-copy-success="<?= h(t('ui.copy.code.success')) ?>"><code class="language-html"><?= h($pixelHtml) ?></code></pre>
</section>
<?php endforeach; ?>
</div>
<div>
<p><?= t('pixel.php.help') ?></p>
<?php
$siteNumber = 0;
?>
<?php foreach ($sites as $code => $domain): ?>
<?php
$siteNumber++;
$siteCode = (string)$code;
$siteLabel = (string)($domain ?: $code);
$pixelPhp = <<<HTML
<script>
(new Image()).src =
'{$installUrl}/api/pixel.php?site={$siteCode}' +
'&page='+encodeURIComponent(location.pathname||'/') +
'&lang='+encodeURIComponent(document.documentElement.lang||'') +
'&title='+encodeURIComponent(document.title||'') +
'&url='+encodeURIComponent(location.pathname||'/') +
'&ref='+encodeURIComponent(document.referrer||'');
</script>
<noscript>
<img src="{$installUrl}/api/pixel.php?site={$siteCode}&page=<?= rawurlencode(\$pageId ?? (parse_url(\$_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?: '/')) ?>&lang=<?= rawurlencode(\$pageLang ?? \$currentLanguage ?? \$lang ?? '') ?>&title=<?= rawurlencode(\$pageTitle ?? \$title ?? '') ?>&url=<?= rawurlencode(parse_url(\$_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?: '/') ?>" alt="" height="1" width="1" style="opacity:0;pointer-events:none;position:absolute">
</noscript>
HTML;
?>
<section>
<header>
<h3><?= h(t('pixel.site')) ?> <?= h($siteLabel) ?></h3>
<?php if ($totalSites > 1): ?>
<span><?= $siteNumber ?>/<?= $totalSites ?></span>
<?php endif; ?>
</header>
<pre class="language-markup line-numbers match-braces" data-prismjs-copy="<?= h(t('ui.copy.code')) ?>" data-prismjs-copy-error="<?= h(t('ui.copy.code.error')) ?>" data-prismjs-copy-success="<?= h(t('ui.copy.code.success')) ?>"><code class="language-html"><?= h($pixelPhp) ?></code></pre>
</section>
<?php endforeach; ?>
</div>
</div>
</div>
</dialog>