<?php

declare(strict_types=1);

/**
 * Ordnerstruktur für die Jubiläums-Chronik 2028 anlegen (unter Vereinshistorie/).
 *
 *   Vereinshistorie/
 *     00_LIESMICH.txt              ← Benennung + Ablageregeln, direkt im Ordner lesbar
 *     00_RECHTE-ZU-KLAEREN.txt     ← von chronik-add.php gepflegt, siehe unten
 *     1908-1929/ … 2010-2028/      ← Jahrzehnt-Bündel, chronologisch
 *     Festschriften-und-Dokumente/ ← Jubiläumsschriften, Satzungen, Urkunden, Protokolle
 *     Undatiert/                   ← Fundstücke ohne Jahr; wandern nach der Zuordnung um
 *
 * Warum Zeit als oberste Ebene und nicht Abteilung: eine Chronik wird chronologisch
 * gelesen und geschrieben. Fußball/Turnen steht im Dateinamen, danach kann man filtern —
 * ein Jahrzehnt dagegen ist die Einheit, in der Kapitel entstehen.
 *
 * Warum Jahrzehnte und nicht Einzeljahre: für 1908-1970 gibt es pro Jahr oft null bis drei
 * Fundstücke. 60 fast leere Ordner verstecken den Bestand, statt ihn zu zeigen. Die frühen
 * Bündel sind bewusst 20 Jahre breit, die jüngeren enger — dort wird das Material dichter.
 *
 * Die Ablage ist bewusst dieselbe wie in dateien-init.php: flach, ohne Vorgaben in der
 * Tiefe. Wer ein Ereignis bündeln will, legt darin „1972-07-15 Einweihung Sportheim" an.
 *
 * Idempotent — vorhandene Ordner und Dateien bleiben unberührt.
 *
 * NUR CLI, und die Ordner müssen auf dem SERVER entstehen, nicht per FTP hochgeladen
 * werden: macOS und Linux normalisieren Umlaute unterschiedlich (NFD/NFC).
 *
 * Aufruf:  php bin/chronik-init.php
 */
if (PHP_SAPI !== 'cli') {
    exit(1);
}

require dirname(__DIR__) . '/app/bootstrap.php';
require __DIR__ . '/chronik-lib.php';

$root = chronik_root();
$parent = dirname($root);

if (!is_dir($parent)) {
    fwrite(STDERR, "storage/dateien/uploads/ fehlt — erst die Dateiablage einrichten (siehe CLAUDE.md).\n");
    exit(1);
}
if (!is_writable($parent)) {
    fwrite(STDERR, "storage/dateien/uploads/ ist nicht beschreibbar.\n");
    exit(1);
}

$created = 0;
$failed = 0;

$dirs = array_merge([''], array_values(CHRONIK_BUCKETS), [CHRONIK_DOKUMENTE, CHRONIK_UNDATIERT]);
foreach (array_unique($dirs) as $rel) {
    $dir = $rel === '' ? $root : $root . '/' . $rel;
    $label = 'Vereinshistorie' . ($rel === '' ? '' : '/' . $rel);
    if (is_dir($dir)) {
        echo "·  {$label} (gibt es schon)\n";
        continue;
    }
    if (!mkdir($dir, 0775, true) && !is_dir($dir)) {
        fwrite(STDERR, "✗  {$label} konnte nicht angelegt werden\n");
        $failed++;
        continue;
    }
    echo "✓  {$label}\n";
    $created++;
}

// LIESMICH: die Ablageregeln gehören in den Ordner, nicht nur ins Repo — gelesen wird
// dort, wo hochgeladen wird. Wird nicht überschrieben, falls jemand sie ergänzt hat.
$readme = $root . '/00_LIESMICH.txt';
if (!is_file($readme)) {
    file_put_contents($readme, chronik_readme_text());
    echo "✓  Vereinshistorie/00_LIESMICH.txt\n";
    $created++;
} else {
    echo "·  Vereinshistorie/00_LIESMICH.txt (gibt es schon)\n";
}

// Entwurf der Verlagsanfrage: gehört neben die Fundstücke, auf die er sich bezieht.
$anfrage = $root . '/00_RECHTE-Anfrage-Verlag-Entwurf.txt';
if (!is_file($anfrage)) {
    file_put_contents($anfrage, chronik_verlagsanfrage_text());
    echo "✓  Vereinshistorie/00_RECHTE-Anfrage-Verlag-Entwurf.txt\n";
    $created++;
} else {
    echo "·  Vereinshistorie/00_RECHTE-Anfrage-Verlag-Entwurf.txt (gibt es schon)\n";
}

echo "\n{$created} Einträge angelegt" . ($failed > 0 ? ", {$failed} fehlgeschlagen" : '') . ".\n";
exit($failed > 0 ? 1 : 0);
