<?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", "charte"];
$allowedApropos   = ["contacts", "credits"];

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

if ($pageSlug && !in_array($pageSlug, $allowedPageSlugs)) {
    $pageSlug = "";
}
if ($aproposKey && !in_array($aproposKey, $allowedApropos)) {
    $aproposKey = "";
}

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

try {
    $db = new Database();

    if ($pageSlug) {
        $page = $db->getPage($pageSlug);
        if (!$page) {
            die("Page introuvable.");
        }
        $editTitle = $page["title"];
        $editType  = "page";
    } else {
        $editType  = "apropos";
        $value     = $db->getAproposContent($aproposKey);
        $editTitle = match($aproposKey) {
            'contacts' => 'Contacts',
            'credits'  => 'Crédits',
        };
    }
} catch (Exception $e) {
    die("Erreur: " . htmlspecialchars($e->getMessage()));
}

$pageTitle = "Éditer : " . $editTitle;
$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;

$initialContent = '';
if ($editType === 'page') {
    $initialContent = $page["content"] ?? "";
}

$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";
