| Server IP : 188.114.96.3 / Your IP : 216.73.216.143 Web Server : Apache System : Linux sv058.home.net.pl 6.8.2 husak_dirty_pages_fix #1 SMP PREEMPT_DYNAMIC Tue Apr 2 22:06:51 CEST 2024 x86_64 User : ( 3194769) PHP Version : 8.5.12 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /polana/includes/ |
Upload File : |
<?php
declare(strict_types=1);
/**
* POLANA V17.4 — consent-first GA4/GTM/Meta tracking.
* Loaded ONLY from the public render_public_head() hook, never admin pages.
*/
function polana_tracking_config(): array
{
$mode = trim(setting('polana_tracking_mode', 'off'));
if (!in_array($mode, ['off', 'direct', 'gtm'], true)) {
$mode = 'off';
}
$ga4 = strtoupper(trim(setting('polana_ga4_id', '')));
$gtm = strtoupper(trim(setting('polana_gtm_id', '')));
$pixel = trim(setting('polana_meta_pixel_id', ''));
if (!preg_match('/^G-[A-Z0-9]{5,20}$/', $ga4)) {
$ga4 = '';
}
if (!preg_match('/^GTM-[A-Z0-9]{4,20}$/', $gtm)) {
$gtm = '';
}
if (!preg_match('/^[0-9]{5,25}$/', $pixel)) {
$pixel = '';
}
return [
'mode' => $mode,
'ga4' => $ga4,
'gtm' => $gtm,
'pixel' => $pixel,
'privacyUrl' => '/polityka-prywatnosci',
];
}
function polana_tracking_active(array $cfg): bool
{
return ($cfg['mode'] === 'direct' && ($cfg['ga4'] !== '' || $cfg['pixel'] !== ''))
|| ($cfg['mode'] === 'gtm' && $cfg['gtm'] !== '');
}
function polana_tracking_head(): void
{
$cfg = polana_tracking_config();
if (!polana_tracking_active($cfg)) {
return;
}
$json = json_encode($cfg, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP | JSON_HEX_APOS | JSON_HEX_QUOT);
if ($json === false) {
return;
}
$base = dirname(__DIR__);
$cssVersion = is_file($base . '/assets/css/polana-tracking.css') ? (string)filemtime($base . '/assets/css/polana-tracking.css') : '174';
$jsVersion = is_file($base . '/assets/js/polana-tracking.js') ? (string)filemtime($base . '/assets/js/polana-tracking.js') : '174';
?>
<!-- POLANA_TRACKING_V174: Consent first; no third-party tracking before opt-in -->
<link rel="stylesheet" href="/assets/css/polana-tracking.css?v=<?= rawurlencode($cssVersion) ?>">
<script>window.POLANA_TRACKING_CONFIG = <?= $json ?>;</script>
<script src="/assets/js/polana-tracking.js?v=<?= rawurlencode($jsVersion) ?>" defer></script>
<?php
}
function polana_tracking_footer(): void
{
$cfg = polana_tracking_config();
if (!polana_tracking_active($cfg)) {
return;
}
?>
<div class="polana-cookie" id="polana-cookie-banner" hidden role="dialog" aria-modal="false" aria-labelledby="polana-cookie-title">
<div class="polana-cookie-inner">
<div class="polana-cookie-copy">
<span class="polana-cookie-kicker" data-polcookie-text="kicker">PRYWATNOŚĆ NA POLANIE</span>
<strong id="polana-cookie-title" data-polcookie-text="title">Ty decydujesz o plikach cookie</strong>
<p data-polcookie-text="description">Niezbędne pliki cookie pomagają działać stronie. Analitykę i reklamy uruchomimy tylko za Twoją zgodą.</p>
<a href="/polityka-prywatnosci" data-polcookie-text="privacy">Polityka prywatności</a>
</div>
<div class="polana-cookie-actions">
<button type="button" data-polcookie-action="reject" data-polcookie-text="reject">Odrzuć opcjonalne</button>
<button type="button" data-polcookie-action="settings" data-polcookie-text="settings">Ustawienia</button>
<button type="button" class="polana-cookie-primary" data-polcookie-action="accept" data-polcookie-text="accept">Akceptuj wszystkie</button>
</div>
</div>
</div>
<div class="polana-cookie-overlay" id="polana-cookie-overlay" hidden>
<section class="polana-cookie-modal" role="dialog" aria-modal="true" aria-labelledby="polana-cookie-modal-title" tabindex="-1">
<h2 id="polana-cookie-modal-title" data-polcookie-text="modalTitle">Ustawienia prywatności</h2>
<p data-polcookie-text="modalDescription">Możesz wybrać osobno statystyki i reklamy. Zmian dokonasz w każdej chwili.</p>
<div class="polana-cookie-option"><div><strong data-polcookie-text="necessary">Niezbędne</strong><small data-polcookie-text="necessaryDescription">Sesja, bezpieczeństwo, formularze — zawsze aktywne.</small></div><span data-polcookie-text="alwaysOn">Zawsze włączone</span></div>
<label class="polana-cookie-option"><div><strong data-polcookie-text="analytics">Analityczne</strong><small data-polcookie-text="analyticsDescription">Anonimowe statystyki odwiedzin w Google Analytics.</small></div><input type="checkbox" id="polana-cookie-analytics"></label>
<label class="polana-cookie-option"><div><strong data-polcookie-text="marketing">Marketingowe</strong><small data-polcookie-text="marketingDescription">Pomiar kampanii i reklamy, np. Meta Pixel.</small></div><input type="checkbox" id="polana-cookie-marketing"></label>
<div class="polana-cookie-modal-actions"><button type="button" data-polcookie-action="reject" data-polcookie-text="reject">Odrzuć opcjonalne</button><button type="button" class="polana-cookie-primary" data-polcookie-action="save" data-polcookie-text="save">Zapisz wybór</button></div>
</section>
</div>
<button class="polana-cookie-manage" type="button" data-polcookie-action="settings" data-polcookie-text="manage" aria-label="Ustawienia plików cookie">Ustawienia cookies</button>
<?php
}