<?php
require_once __DIR__ . "/../../bootstrap.php";
require_once __DIR__ . '/../../src/AdminAuth.php';
AdminAuth::requireLogin();

require_once __DIR__ . '/../../src/Database.php';

if (empty($_SESSION["csrf_token"])) {
    $_SESSION["csrf_token"] = bin2hex(random_bytes(32));
}

$allowedPageSlugs = ["about", "licenses"];
$allowedApropos   = ["contacts"];

$pageSlug    = $_GET["slug"]       ?? "";
$aproposKey  = $_GET["apropos"]    ?? "";
$formHelpKey = $_GET["form_block"] ?? "";

if ($pageSlug && !in_array($pageSlug, $allowedPageSlugs)) {
    $pageSlug = "";
}
if ($aproposKey && !in_array($aproposKey, $allowedApropos)) {
    $aproposKey = "";
}
if ($formHelpKey && !in_array($formHelpKey, Database::FORM_HELP_KEYS, true)) {
    $formHelpKey = "";
}

if (!$pageSlug && !$aproposKey && !$formHelpKey) {
    header("Location: /admin/contenus.php");
    exit();
}

try {
    $db = new Database();

    if ($pageSlug) {
        $page = $db->getPage($pageSlug);
        if (!$page) {
            die("Page introuvable.");
        }
        $editTitle = $page["title"];
        if ($pageSlug === 'about') {
            $editType = 'about_page';
            $aboutContacts = $db->getAproposContent('contacts');
            $aboutContacts = is_array($aboutContacts) ? $aboutContacts : [];
        } else {
            $editType = "page";
        }
    } elseif ($formHelpKey) {
        $editType        = "form_help";
        $formHelpContent = $db->getFormHelpBlock($formHelpKey);
        $editTitle       = $formHelpKey;
    } else {
        $editType  = "apropos";
        $value     = $db->getAproposContent($aproposKey);
        $editTitle = match($aproposKey) {
            'contacts' => 'Contacts',
        };
    }
} catch (Exception $e) {
    die("Erreur: " . htmlspecialchars($e->getMessage()));
}

$pageTitle = "Éditer : " . $editTitle;

$initialContent = '';
$extraJs = [];
$extraJsInline = '';

if ($editType === 'page' || $editType === 'about_page') {
    $initialContent = $page["content"] ?? "";
    $extraJs = ["/assets/js/overtype.min.js"];
    $extraJsInline = <<<'JS'
var OT = window.OverType.default || window.OverType;
var hidden = document.getElementById('content');
var editor = new OT(document.getElementById('editor'), {
    value: hidden.value,
    minHeight: '400px',
    spellcheck: false,
    onChange: function(value) { hidden.value = value; }
});
JS;
} elseif ($editType === 'form_help') {
    $initialContent = $formHelpContent;
    $extraJs = ["/assets/js/overtype.min.js"];
    $extraJsInline = <<<'JS'
var OT = window.OverType.default || window.OverType;
var hidden = document.getElementById('content');
var editor = new OT(document.getElementById('editor'), {
    value: hidden.value,
    minHeight: '400px',
    spellcheck: false,
    onChange: function(value) { hidden.value = value; }
});
JS;
}

$isAdmin = true;
$bodyClass = "admin-body";
require_once APP_ROOT . "/templates/head.php";
include APP_ROOT . "/templates/header.php";
include APP_ROOT . '/templates/admin/contenus-edit.php';
require_once APP_ROOT . "/templates/admin/footer.php";
