diff --git a/content/profile.php b/content/profile.php
index aefdc10..4ac69fc 100644
--- a/content/profile.php
+++ b/content/profile.php
@@ -93,7 +93,7 @@ $isEditMode = (isset($_GET["edit"]) && $_GET["edit"] === "1") || !empty($error);
+ 0): ?>
+
+
+
+
+
+ getCreated()); ?>
+
+
+
+
+ getContent())); ?>
+
+
+
+ Zum Beitrag
+
+
+
+
+
+
Du hast noch keine Kommentare geschrieben.
+
+
diff --git a/php/controller/profile-controller.php b/php/controller/profile-controller.php
index e183b20..9990fbc 100644
--- a/php/controller/profile-controller.php
+++ b/php/controller/profile-controller.php
@@ -3,6 +3,7 @@
require_once "php/model/UserManager.php";
require_once "php/model/Article.php";
require_once "php/model/ArticleManager.php";
+require_once "php/model/CommentManager.php";
require_once "php/validator/user-validator.php";
$error = null;
@@ -76,6 +77,9 @@ try {
$articleManager = ArticleManager::getInstance();
$userArticles = $articleManager->getArticlesByAuthor($_SESSION["user_email"]);
+ $commentManager = CommentManager::getInstance();
+ $userComments = $commentManager->getCommentsByAuthor($_SESSION["user_email"]);
+
if (!isset($userArticles)) {
$_SESSION["message"] = "user_has_no_articles";
}
diff --git a/php/model/CommentManagerDAO.php b/php/model/CommentManagerDAO.php
index 63aaf83..348126e 100644
--- a/php/model/CommentManagerDAO.php
+++ b/php/model/CommentManagerDAO.php
@@ -42,4 +42,13 @@ interface CommentManagerDAO
public function getCommentsByArticle(
$articleId
);
+
+ /**
+ * Gibt alle Kommentare eines Autors zurück.
+ *
+ * @param string $author E-Mail-Adresse des Autors
+ *
+ * @return Comment[] Liste der Kommentare
+ */
+ public function getCommentsByAuthor($author);
}
\ No newline at end of file
diff --git a/php/model/DatabaseCommentManager.php b/php/model/DatabaseCommentManager.php
index 5f61e13..29f2699 100644
--- a/php/model/DatabaseCommentManager.php
+++ b/php/model/DatabaseCommentManager.php
@@ -1,222 +1,68 @@
-getConnection();
- /**
- * Erstellt die Kommentartabelle,
- * falls diese noch nicht existiert.
- *
- * Zusätzlich wird geprüft, ob die Spalte parent_comment_id existiert.
- */
- public function __construct()
- {
- try {
- $db = $this->getConnection();
+$sql = "
+SELECT
+id,
+article_id,
+CASE
+WHEN parent_comment_id IS NULL THEN NULL
+WHEN parent_comment_id = '' THEN NULL
+WHEN parent_comment_id = 0 THEN NULL
+ELSE parent_comment_id
+END AS parent_comment_id,
+author,
+content,
+created
+FROM comments
+WHERE author = :author
+ORDER BY created DESC
+";
- $db->exec("
- CREATE TABLE IF NOT EXISTS comments (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- article_id INTEGER NOT NULL,
- parent_comment_id INTEGER NULL,
- author TEXT NOT NULL,
- content TEXT NOT NULL,
- created TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- ");
+$command = $db->prepare($sql);
- $columns = $db->query("PRAGMA table_info(comments);")->fetchAll(PDO::FETCH_ASSOC);
- $hasParentColumn = false;
+$command->execute([
+":author" => $author
+]);
- foreach ($columns as $column) {
- if ($column["name"] === "parent_comment_id") {
- $hasParentColumn = true;
- break;
- }
- }
+$comments = [];
- if (!$hasParentColumn) {
- $db->exec("ALTER TABLE comments ADD COLUMN parent_comment_id INTEGER NULL;");
- }
+while ($row = $command->fetch(PDO::FETCH_ASSOC)) {
+$parentCommentId = null;
- unset($db);
+if (
+isset($row["parent_comment_id"])
+&& $row["parent_comment_id"] !== null
+&& $row["parent_comment_id"] !== ""
+&& intval($row["parent_comment_id"]) !== 0
+) {
+$parentCommentId = intval($row["parent_comment_id"]);
+}
- } catch (PDOException $e) {
- throw new RuntimeException(
- "Kommentardatenbank konnte nicht erstellt werden."
- );
- }
- }
+$comments[] = new Comment(
+intval($row["id"]),
+intval($row["article_id"]),
+$parentCommentId,
+$row["author"],
+$row["content"],
+$row["created"]
+);
+}
- /**
- * Baut die Verbindung zur SQLite-Datenbank auf.
- *
- * @return PDO Datenbankverbindung
- */
- private function getConnection()
- {
- try {
- $dsn = 'sqlite:' . __DIR__ . '/../../db/comments.db';
+return $comments;
- $db = new PDO($dsn, null, null);
- $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
-
- return $db;
-
- } catch (PDOException $e) {
- throw new RuntimeException(
- "Verbindung zur Kommentardatenbank fehlgeschlagen."
- );
- }
- }
-
- /**
- * Gibt die Singleton-Instanz zurück.
- *
- * @return DatabaseCommentManager
- */
- public static function getInstance()
- {
- if (self::$instance === null) {
- self::$instance = new DatabaseCommentManager();
- }
-
- return self::$instance;
- }
-
- /**
- * Speichert einen neuen Kommentar oder eine Antwort.
- *
- * @param int $articleId ID des Beitrags
- * @param string $author Autor des Kommentars
- * @param string $content Inhalt des Kommentars
- * @param int|null $parentCommentId ID des Eltern-Kommentars oder null
- *
- * @return int ID des neu gespeicherten Kommentars
- */
- public function addComment(
- $articleId,
- $author,
- $content,
- $parentCommentId = null
- ) {
- try {
- $db = $this->getConnection();
-
- if ($parentCommentId === "" || $parentCommentId === 0 || $parentCommentId === "0") {
- $parentCommentId = null;
- }
-
- $sql = "
- INSERT INTO comments (
- article_id,
- parent_comment_id,
- author,
- content
- )
- VALUES (
- :articleId,
- :parentCommentId,
- :author,
- :content
- )
- ";
-
- $command = $db->prepare($sql);
-
- $command->execute([
- ":articleId" => $articleId,
- ":parentCommentId" => $parentCommentId,
- ":author" => $author,
- ":content" => $content
- ]);
-
- return intval($db->lastInsertId());
-
- } catch (PDOException $e) {
- throw new RuntimeException(
- "Kommentar konnte nicht gespeichert werden."
- );
- }
- }
-
- /**
- * Lädt alle Kommentare eines Beitrags.
- *
- * @param int $articleId ID des Beitrags
- *
- * @return Comment[]
- */
- public function getCommentsByArticle(
- $articleId
- ) {
- try {
- $db = $this->getConnection();
-
- $sql = "
- SELECT
- id,
- article_id,
- CASE
- WHEN parent_comment_id IS NULL THEN NULL
- WHEN parent_comment_id = '' THEN NULL
- WHEN parent_comment_id = 0 THEN NULL
- ELSE parent_comment_id
- END AS parent_comment_id,
- author,
- content,
- created
- FROM comments
- WHERE article_id = :articleId
- ORDER BY created ASC
- ";
-
- $command = $db->prepare($sql);
-
- $command->execute([
- ":articleId" => $articleId
- ]);
-
- $comments = [];
-
- while ($row = $command->fetch(PDO::FETCH_ASSOC)) {
- $parentCommentId = null;
-
- if (
- isset($row["parent_comment_id"])
- && $row["parent_comment_id"] !== null
- && $row["parent_comment_id"] !== ""
- && intval($row["parent_comment_id"]) !== 0
- ) {
- $parentCommentId = intval($row["parent_comment_id"]);
- }
-
- $comments[] = new Comment(
- intval($row["id"]),
- intval($row["article_id"]),
- $parentCommentId,
- $row["author"],
- $row["content"],
- $row["created"]
- );
- }
-
- return $comments;
-
- } catch (PDOException $e) {
- throw new RuntimeException(
- "Kommentare konnten nicht geladen werden."
- );
- }
- }
+} catch (PDOException $e) {
+throw new RuntimeException(
+"Kommentare konnten nicht geladen werden."
+);
+}
}
\ No newline at end of file