= 2) { $metadata = $parts[0]; $base64Data = $parts[1]; preg_match('/data:image\/(?.*?);/', $metadata, $matches); $extension = $matches['extension'] ?? 'jpg'; if ($extension === 'jpeg') { $extension = 'jpg'; } $fileName = 'img_' . uniqid() . '.' . $extension; $filePath = $uploadDir . $fileName; if (file_put_contents($filePath, base64_decode($base64Data)) !== false) { $block['value'] = 'uploads/' . $fileName; } else { $_SESSION["message"] = "image_upload_error"; header("location: ../../index.php?pfad=updateArticle&id=$id"); exit(); } } } } } unset($block); }*/ // ----------------- Gelöschte Bilder über die JS-Löschliste entfernen ----------------- if (isset($_POST['deleted_images'])) { $rawPostData = $_POST['deleted_images']; // Test 1: Schaut, ob überhaupt Daten vom JavaScript ankommen if (empty($rawPostData) || $rawPostData === '[]') { // Wenn das Feld leer ist, bricht PHP hier ab und zeigt es an die("ABBRUCH: Das Feld 'deleted_images' ist leer im Controller angekommen! Das JS hat nichts geschickt."); } // Bereinigung von Slashes und Backslashes, um valides JSON zu garantieren $rawPostData = str_replace('\\"', '"', $rawPostData); $rawPostData = str_replace('\\/', '/', $rawPostData); $deletedImages = json_decode($rawPostData, true); // Test 2: Prüft, ob das JSON fehlerfrei dekodiert werden konnte if (json_last_error() !== JSON_ERROR_NONE) { die("ABBRUCH: JSON-Dekodierungsfehler: " . json_last_error_msg() . " | Rohdaten: " . htmlspecialchars($rawPostData)); } // Absoluter Server-Pfad zum Uploads-Ordner $uploadDir = realpath(__DIR__ . '/../../uploads') . DIRECTORY_SEPARATOR; if (is_array($deletedImages)) { foreach ($deletedImages as $imagePath) { // Filtert den reinen Dateinamen (z.B. img_65a123.jpg) $filename = basename($imagePath); $fullDeletePath = $uploadDir . $filename; // Test 3: Prüft, ob PHP die Datei physisch auf der Festplatte findet if (file_exists($fullDeletePath)) { // Versuchen zu löschen if (unlink($fullDeletePath)) { // ERFOLGSMELDUNG: Wenn gelöscht wurde, stoppen wir hier und feiern den Erfolg! die("ERFOLG: Die Datei " . $filename . " wurde physisch aus /uploads gelöscht! Der Pfad war: " . $fullDeletePath); } else { $error = error_get_last(); die("ABBRUCH: Datei existiert, aber Linux verbietet das Löschen! Fehler: " . $error['message']); } } else { // Wenn die Datei nicht existiert (z.B. weil sie schon weg ist oder der Pfad falsch berechnet wurde) die("ABBRUCH: PHP findet die Datei nicht unter dem Pfad:
" . $fullDeletePath . ""); } } } } // ----------------- Ende der Lösch-Logik ----------------- // Aktualisiertes Array wieder in JSON konvertieren $finalContent = json_encode($blocks, JSON_UNESCAPED_UNICODE); // ----------------- Übertragung der validierten Daten in ArticleManager: --------------------------- try { $articleManager = ArticleManager::getInstance(); $article = $articleManager->getArticle($id); $article->setTitle($title); $article->setContent($finalContent); $article->setCategory($category); $article->setTags($cleanedTags); $articleManager->updateArticle($id ,$article, $author); unset($_SESSION["old_title"], $_SESSION["old_content"], $_SESSION["old_category"], $_SESSION["old_tags"]); } catch (\Throwable $e){ $_SESSION["message"] = $e->getMessage(); header("location: ../../index.php?pfad=updateArticle&id=$id"); exit(); } $_SESSION["message"] = "article_updated"; // Weiterleitung zur Homepage header("location: ../../index.php?pfad=showArticle&id=$id"); } } ?>