94 lines
3.4 KiB
PHP
94 lines
3.4 KiB
PHP
<?php
|
|
session_start();
|
|
require_once '../model/LocalArticleManager.php';
|
|
require_once '../model/ArticleManager.php';
|
|
require_once '../model/Article.php';
|
|
require_once '../validator/article-validator.php';
|
|
|
|
if ($_SERVER["REQUEST_METHOD"] === "POST") {
|
|
$_SESSION["old_title"] = $_POST["title"] ?? '';
|
|
$_SESSION["old_content"] = $_POST["content"] ?? '';
|
|
$_SESSION["old_category"] = $_POST["category"] ?? '';
|
|
$_SESSION["old_tags"] = $_POST["tags"] ?? '';
|
|
try {
|
|
$id = $_GET["id"];
|
|
} catch (Exception $e){
|
|
$_SESSION["message"] = "missing_id";
|
|
}
|
|
if (!isset($_POST["title"]) ||!isset($_POST["content"]) || !isset($_POST["category"])){
|
|
$_SESSION["message"] = "missing_parameters";
|
|
} elseif(!isset($id)) {
|
|
$_SESSION["message"] = "missing_id";
|
|
}else{
|
|
$title = $_POST["title"];
|
|
$content = $_POST["content"];
|
|
$author = "max.mustermann"; // TODO: später aus Session den angemeldeten Nutzer beziehen.
|
|
$category = $_POST["category"];
|
|
if (isset($_POST['tags'])) {
|
|
$tags = $_POST['tags'];
|
|
} else {
|
|
$tags = '';
|
|
}
|
|
|
|
// -------------------------------- Validierung der Daten: -------------------------
|
|
if (!articleAuthorValidator($author)) {
|
|
$_SESSION["message"] = "author_not_valid";
|
|
header("location: ../../index.php?pfad=createArticle");
|
|
exit();
|
|
}
|
|
|
|
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($_POST["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);
|
|
// Duplikate entfernen:
|
|
$cleanedTags = array_unique($cleanedTags);
|
|
$cleanedTags = implode(',', $cleanedTags);
|
|
}
|
|
}
|
|
|
|
// ----------------- Übertragung der validierten Daten in ArticleManager: ---------------------------
|
|
try {
|
|
$articleManager = ArticleManager::getInstance();
|
|
$article = $articleManager->getArticle($id);
|
|
$article->setTitle($title);
|
|
$article->setContent($content);
|
|
$article->setCategory($category);
|
|
$article->setTags($cleanedTags);
|
|
$articleManager->updateArticle($id ,$article, $author);
|
|
} catch (Exception $e){
|
|
$_SESSION["message"] = "internal_error";
|
|
header("location: ../../index.php?pfad=createArticle");
|
|
exit();
|
|
}
|
|
$_SESSION["message"] = "article_updated";
|
|
// Weiterleitung zur Homepage
|
|
header("location: ../../index.php?pfad=showArticle&id=$id");
|
|
}
|
|
}
|
|
|
|
?>
|