<?php
declare(strict_types=1);
require_once __DIR__ . '/bootstrap.php';
admin_require_login();

$settings = cms_settings();
$analytics = cms_analytics_settings($settings);
$notice = '';

if (request_method() === 'POST') {
    if (!verify_csrf($_POST['csrf_token'] ?? null)) {
        $notice = '<div class="notice notice--error">Ошибка безопасности.</div>';
    } else {
        $headCode = (string)($_POST['head_code'] ?? ($analytics['head_code'] ?? ''));
        $bodyCode = (string)($_POST['body_code'] ?? ($analytics['body_code'] ?? ''));

        $settings['analytics'] = [
            'enabled' => !empty($_POST['enabled']),
            'head_code' => trim(str_replace("\r\n", "\n", $headCode)),
            'body_code' => trim(str_replace("\r\n", "\n", $bodyCode)),
        ];

        cms_save_settings($settings);
        $settings = cms_settings();
        $analytics = cms_analytics_settings($settings);
        $notice = '<div class="notice">Настройки метрики сохранены. Код уже подключён на публичной части сайта.</div>';
    }
}

ob_start();
echo $notice;
?>
<form class="grid" method="post">
  <input type="hidden" name="csrf_token" value="<?= e(csrf_token()) ?>">

  <section class="panel grid">
    <div class="admin-page-head admin-page-head--compact">
      <div>
        <div class="badge">Аналитика</div>
        <h2 style="margin:10px 0 6px">Яндекс Метрика и пиксели</h2>
        <p class="muted" style="margin:0">Код хранится в CMS и автоматически вставляется на все публичные страницы сайта: script — в <code>&lt;head&gt;</code>, а <code>&lt;noscript&gt;</code> — сразу после открытия <code>&lt;body&gt;</code>.</p>
      </div>
      <div class="module-actions">
        <a class="button button--ghost" href="/" target="_blank" rel="noopener">Открыть сайт</a>
        <a class="button button--ghost" href="/admin/settings.php">Общие настройки</a>
      </div>
    </div>

    <label class="pill"><input type="checkbox" name="enabled" <?= !empty($analytics['enabled']) ? 'checked' : '' ?>> включить код аналитики на сайте</label>

    <div class="notice" style="margin:0">По умолчанию уже подставлен ваш код Яндекс Метрики с ID <strong>108566032</strong>. Здесь же можно хранить и другие скрипты отслеживания.</div>

    <label>
      <span>Код для &lt;head&gt;</span>
      <textarea name="head_code" style="min-height:320px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace"><?= e($analytics['head_code'] ?? '') ?></textarea>
    </label>

    <label>
      <span>Код сразу после открытия &lt;body&gt;</span>
      <textarea name="body_code" style="min-height:140px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace"><?= e($analytics['body_code'] ?? '') ?></textarea>
    </label>
  </section>

  <section class="panel grid">
    <div class="badge">Как это работает</div>
    <div class="grid grid-2">
      <div class="notice" style="margin:0">
        <strong>Публичная часть</strong><br>
        Код выводится через общий шаблон сайта и работает на главной, внутренних страницах, политике и правилах.
      </div>
      <div class="notice" style="margin:0">
        <strong>Админка не затрагивается</strong><br>
        В CMS метрика не вставляется, чтобы не засорять статистику вашими собственными действиями в панели.
      </div>
    </div>
  </section>

  <div class="panel sticky-actions">
    <div class="module-actions">
      <button class="button" type="submit">Сохранить метрику</button>
      <a class="button button--ghost" href="/admin/backups.php">Открыть бэкапы</a>
    </div>
  </div>
</form>
<?php
admin_layout('Метрика и пиксели', ob_get_clean(), 'analytics');
