95 lines
3.5 KiB
PHP
95 lines
3.5 KiB
PHP
|
|
<?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);
|