gelöschte Bilder entfernen

This commit is contained in:
2026-06-14 22:41:16 +02:00
parent feaef4a624
commit 8ed7f7ec8f
3 changed files with 21 additions and 34 deletions
+5 -34
View File
@@ -77,37 +77,12 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
mkdir($uploadDir, 0755, true);
}
// --- Verwaiste Bilder löschen:
try {
// 1. Alten Artikelzustand vor dem Update aus der Datenbank laden
$articleManager = ArticleManager::getInstance();
$oldArticle = $articleManager->getArticle($id);
$oldBlocks = json_decode($oldArticle->getContent(), true);
if (is_array($oldBlocks) && is_array($blocks)) {
$oldImages = [];
$newImages = [];
// Alle Bildpfade aus dem alten Zustand sammeln
foreach ($oldBlocks as $oldBlock) {
if (isset($oldBlock['type'], $oldBlock['value']) && $oldBlock['type'] === 'image' && !str_starts_with($oldBlock['value'], 'data:image/')) {
$oldImages[] = $oldBlock['value'];
}
}
// Alle Bildpfade aus dem neuen Zustand sammeln
foreach ($blocks as $newBlock) {
if (isset($newBlock['type'], $newBlock['value']) && $newBlock['type'] === 'image' && !str_starts_with($newBlock['value'], 'data:image/')) {
$newImages[] = $newBlock['value'];
}
}
// Differenz ermitteln: Welche Pfade waren alt da, sind neu aber weg?
$deletedImages = array_diff($oldImages, $newImages);
// Diese Dateien physisch vom Server löschen
// --- Verwaiste Bilder löschen über die JS-Löschliste:
if (isset($_POST['deleted_images'])) {
$deletedImages = json_decode($_POST['deleted_images'], true);
if (is_array($deletedImages)) {
foreach ($deletedImages as $imagePath) {
// Extra-Sicherheit: Nur Dateien im eigenen Uploads-Ordner löschen
// Sicherheit: Nur den reinen Dateinamen filtern (Schutz vor Manipulation)
$filename = basename($imagePath);
$fullDeletePath = $uploadDir . $filename;
@@ -116,10 +91,6 @@ if ($_SERVER["REQUEST_METHOD"] === "POST") {
}
}
}
} catch (\Throwable $e) {
$_SESSION["message"] = $e->getMessage();
header("location: ../../index.php?pfad=updateArticle&id=$id");
exit();
}
// --- NEU hinzugefügte Base64-Bilder: