'text', 'value' => '']; } elseif ($action === 'add_image') { $blocks[] = ['type' => 'image', 'value' => '']; } elseif (str_starts_with($action, 'delete_block:')) { $deleteIndex = (int) substr($action, strlen('delete_block:')); unset($blocks[$deleteIndex]); $blocks = array_values($blocks); } $_SESSION["old_content"] = json_encode($blocks, JSON_UNESCAPED_UNICODE); header("location: ../../index.php?pfad=createArticle"); exit(); } // --------------------------------------------------------------------- // Echtes Veröffentlichen // --------------------------------------------------------------------- if (!isset($_POST["title"]) || !isset($_POST["category"])) { $_SESSION["message"] = "missing_parameters"; header("location: ../../index.php?pfad=createArticle"); exit(); } else { $title = $_POST["title"]; $content = json_encode($blocks, JSON_UNESCAPED_UNICODE); $author = $_SESSION["user_email"]; $category = $_POST["category"]; $tags = $_POST['tags'] ?? ''; // -------------------------------- Validierung der Daten: ------------------------- if (!articleTitleValidator($title)) { $_SESSION["message"] = "invalid_title"; header("location: ../../index.php?pfad=createArticle"); exit(); } if (!articleContentValidator($content)) { $_SESSION["message"] = "invalid_content"; header("location: ../../index.php?pfad=createArticle"); exit(); } if (!articleCategoryValidator($category)) { $_SESSION["message"] = "invalid_category"; header("location: ../../index.php?pfad=createArticle"); exit(); } if (!articleTagValidator($tags)) { $_SESSION["message"] = "invalid_tags"; header("location: ../../index.php?pfad=createArticle"); exit(); } else { $cleanedTags = []; $rawTags = explode(',', $tags); foreach ($rawTags as $rawTag) { // Leerzeichen am Anfang/Ende des einzelnen Tags entfernen: $tag = trim($rawTag); $cleanedTags[] = $tag; } // Duplikate entfernen: $cleanedTags = array_unique($cleanedTags); $cleanedTags = implode(',', $cleanedTags); } // ----------------- Übertragung der validierten Daten in ArticleManager: --------------------------- try { $articleManager = ArticleManager::getInstance(); // $content enthält bereits die finalen "uploads/..."-Pfade (kein Base64 mehr), // da rebuildBlocksFromPost() Datei-Uploads sofort verarbeitet. $articleManager->addArticle($title, $content, $author, $category, $cleanedTags); // Formulardaten nach erfolgreichem Erstellen aus der Session löschen unset($_SESSION["old_title"], $_SESSION["old_content"], $_SESSION["old_category"], $_SESSION["old_tags"]); } catch (\Throwable $e) { $_SESSION["message"] = "internal_error"; header("location: ../../index.php?pfad=createArticle"); exit(); } $_SESSION["message"] = "new_article"; // Weiterleitung zur Homepage header("location: ../../index.php"); exit(); } } ?>