<?php

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

require_once __DIR__ . "/../model/CommentManager.php";

/*
 * Kommentare dürfen nur über ein POST-Formular gelöscht werden.
 */
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
    header("Location: index.php");
    exit();
}
$commentId = filter_input(
    INPUT_POST,
    "comment_id",
    FILTER_VALIDATE_INT
);

$articleId = filter_input(
    INPUT_POST,
    "article_id",
    FILTER_VALIDATE_INT
);

/*
 * Nur angemeldete Nutzer dürfen Kommentare löschen.
 */
if (!isset($_SESSION["user_email"])) {
    $_SESSION["comment_message"] = "Du musst angemeldet sein.";
    $_SESSION["comment_message_type"] = "error";

    if ($articleId !== false && $articleId !== null) {
        header(
            "Location: index.php?pfad=showArticle&id="
            . urlencode((string) $articleId)
            . "#comments"
        );
    } else {
        header("Location: index.php");
    }
    exit();
}

/*
 * Kommentar-ID und Beitrags-ID müssen gültige Zahlen sein.
 */
if (
    $commentId === false
    || $commentId === null
    || $articleId === false
    || $articleId === null
) {
    $_SESSION["comment_message"] =
        "Der Kommentar konnte nicht gelöscht werden.";

    $_SESSION["comment_message_type"] = "error";

    header("Location: index.php");
    exit();
}

try {
    $commentManager = CommentManager::getInstance();

    /*
     * Die E-Mail-Adresse aus der Session wird mitgegeben.
     * Dadurch kann der Nutzer nur eigene Kommentare löschen.
     */
    $deleted = $commentManager->deleteComment(
        $commentId,
        $_SESSION["user_email"]
    );

    if ($deleted) {
        $_SESSION["comment_message"] =
            "Der Kommentar wurde gelöscht.";

        $_SESSION["comment_message_type"] = "success";
    } else {
        $_SESSION["comment_message"] =
            "Der Kommentar wurde nicht gefunden oder gehört nicht dir.";

        $_SESSION["comment_message_type"] = "error";
    }

} catch (Throwable $e) {
    $_SESSION["comment_message"] =
        "Der Kommentar konnte nicht gelöscht werden.";

    $_SESSION["comment_message_type"] = "error";
}

/*
 * Anschließend wird wieder zum Beitrag und zu den Kommentaren geleitet.
 */
header(
    "Location: index.php?pfad=showArticle&id="
    . urlencode((string) $articleId)
    . "#comments"
);

exit();
