Veröffentlichen friert auch die Bilder ein
Der Snapshot fror die Daten ein, verwies aber weiter auf Ordner, die die
Sync-Skripte verwalten: matchcenter-sync räumt Wappen weg, die der BFV nicht mehr
führt (eine Saison), instagram-sync ältere Posts (Wochen). Am 31.07.2026
nachgewiesen — ein Lauf löschte 18 Wappen und 3 Bilder. Eine archivierte Ausgabe
wäre also mit der Zeit von selbst zerfallen, und "gedruckt = fixiert" war damit
nur die halbe Wahrheit.
bin/stadionzeitung-publish.php kopiert jetzt alles, worauf der Snapshot zeigt
(img/crests, img/instagram, img/news), als fix-* in den Ausgaben-Ordner und
schreibt die Pfade um. Varianten-Sets {base, widths} werden über alle Breiten
kopiert und nur umgeschrieben, wenn alle da sind — ein halbes srcset wäre
schlimmer als der alte Pfad; genau daran fiel img/news/neue-website beim ersten
Versuch auf. --entwurf löscht die fix-*-Dateien wieder, sie gehören zum Snapshot.
Flache Dateinamen statt Unterordner, weil die Aufräum-Logik in
stadionzeitung-add.php nur Dateien entfernt und ein Unterordner als Waise bliebe.
bin/preflight.php warnt, wenn eine veröffentlichte Ausgabe noch auf die
flüchtigen Ordner zeigt — sonst verfiele sie still.
Geprüft am Hutschdorf-Heft: 39 Dateien eingefroren, Snapshot verweist nur noch
auf den Ausgaben-Ordner, 88 Bilder in Viewer und Druckfassung erreichbar, keins
fehlt, preflight-Warnung verschwindet. Der Testlauf wurde danach zurückgenommen:
der lokale Matchcenter-Stand ist einen Tag alt, eingefroren wird auf dem Server
nach dem letzten Sync vor dem Druck.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NzeVVgMCrzCDJAKeLEdKr7
This commit is contained in:
@@ -296,6 +296,36 @@ if ($cronKey === '' || $cronKey === 'CHANGE_ME') {
|
||||
}
|
||||
}
|
||||
|
||||
// --- Veröffentlichte Stadionzeitungen: Bilder wirklich eingefroren? ---
|
||||
// Der Snapshot friert die Daten ein. Zeigt er noch auf img/crests oder img/instagram,
|
||||
// hängt die Ausgabe weiter am Sync: der räumt Wappen weg, die der BFV nicht mehr führt
|
||||
// (eine Saison), und Instagram-Bilder älterer Posts (Wochen). Am 31.07.2026 löschte ein
|
||||
// Lauf 18 Wappen und 3 Bilder. Danach zeigte eine gedruckte Ausgabe Lücken.
|
||||
// bin/stadionzeitung-publish.php kopiert sie deshalb in den Ausgaben-Ordner.
|
||||
// Reparatur einer Alt-Ausgabe: `--entwurf` und neu veröffentlichen.
|
||||
$szFile = DATA_PATH . '/stadionzeitung.json';
|
||||
if (is_file($szFile)) {
|
||||
$szData = json_decode((string) file_get_contents($szFile), true) ?: [];
|
||||
foreach ($szData['issues'] ?? [] as $ausgabe) {
|
||||
if (($ausgabe['status'] ?? 'veroeffentlicht') !== 'veroeffentlicht' || !isset($ausgabe['snapshot'])) {
|
||||
continue;
|
||||
}
|
||||
$rohSnap = (string) json_encode($ausgabe['snapshot']);
|
||||
$fluechtig = [];
|
||||
foreach (['img/crests/', 'img/instagram/'] as $ordner) {
|
||||
// JSON escapt Schrägstriche, deshalb beide Schreibweisen prüfen.
|
||||
if (str_contains($rohSnap, $ordner) || str_contains($rohSnap, str_replace('/', '\\/', $ordner))) {
|
||||
$fluechtig[] = rtrim($ordner, '/');
|
||||
}
|
||||
}
|
||||
if ($fluechtig !== []) {
|
||||
$warnings[] = "Stadionzeitung '{$ausgabe['slug']}' ist veröffentlicht, ihr Snapshot zeigt aber noch auf "
|
||||
. implode(' und ', $fluechtig) . ' — diese Ordner verwalten die Sync-Skripte, die Bilder verschwinden dort mit der Zeit.'
|
||||
. ' Einfrieren: php bin/stadionzeitung-publish.php ' . $ausgabe['slug'] . ' --entwurf && php bin/stadionzeitung-publish.php ' . $ausgabe['slug'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// --- Inline-Styles (die CSP verwirft sie stillschweigend) ---
|
||||
// Diese Prüfung existiert wegen eines echten Ausfalls am 31.07.2026: der
|
||||
// Banner-Slider setzte sein Hintergrundbild per style="--banner-bg: url(…)". Auf
|
||||
|
||||
Reference in New Issue
Block a user