Merge branch 'Beitrag-bearbeiten' into dev
This commit is contained in:
+21
-11
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/**
|
||||
* Klasse: Artikel
|
||||
* Diese Klasse stellt alle Daten eines Artikels (Beitrag) bereit
|
||||
* Diese Klasse stellt alle Daten eines Beitrags (Beitrag) bereit
|
||||
*
|
||||
* @author Niklas Ortmann
|
||||
*/
|
||||
@@ -38,7 +38,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die ID eines Artikels zurück.
|
||||
* Gibt die ID eines Beitrags zurück.
|
||||
* @return int
|
||||
*/
|
||||
public function getId(): int
|
||||
@@ -47,7 +47,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Titel eines Artikels zurück.
|
||||
* Gibt den Titel eines Beitrags zurück.
|
||||
* @return string
|
||||
*/
|
||||
public function getTitle(): string
|
||||
@@ -56,7 +56,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Titel eines Artikels
|
||||
* Setzt den Titel eines Beitrags
|
||||
* @param $title
|
||||
* @return void
|
||||
*/
|
||||
@@ -66,7 +66,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Content eines Artikels zurück.
|
||||
* Gibt den Content eines Beitrags zurück.
|
||||
* TODO: Content muss noch definiert werden.
|
||||
* @return string
|
||||
*/
|
||||
@@ -76,7 +76,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Content eines Artikels.
|
||||
* Setzt den Content eines Beitrags.
|
||||
* TODO: Content muss noch definiert werden.
|
||||
* @param $content
|
||||
* @return void
|
||||
@@ -87,7 +87,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt den Autor eines Artikels zurück.
|
||||
* Gibt den Autor eines Beitrags zurück.
|
||||
* @return string
|
||||
*/
|
||||
public function getAuthor(): string
|
||||
@@ -96,7 +96,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt das Veröffentlichungsdatum des Artikels zurück.
|
||||
* Gibt das Veröffentlichungsdatum des Beitrags zurück.
|
||||
* @return string
|
||||
*/
|
||||
public function getCreationDate(): string
|
||||
@@ -105,7 +105,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Kategorie eines Artikels zurück.
|
||||
* Gibt die Kategorie eines Beitrags zurück.
|
||||
* @return string
|
||||
*/
|
||||
public function getCategory(): string
|
||||
@@ -114,7 +114,17 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Schlagworte eines Artikels zurück.
|
||||
* Setzt die Kategorie eines Beitrags.
|
||||
* @param string $category
|
||||
* @return void
|
||||
*/
|
||||
public function setCategory(string $category)
|
||||
{
|
||||
$this->category = $category;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Schlagworte eines Beitrags zurück.
|
||||
* @return string
|
||||
*/
|
||||
public function getTags(): string
|
||||
@@ -123,7 +133,7 @@ class Article
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Schlagworte eines Artikels.
|
||||
* Setzt die Schlagworte eines Beitrags.
|
||||
* @param string $tags
|
||||
*/
|
||||
public function setTags(string $tags)
|
||||
|
||||
@@ -21,26 +21,24 @@ interface ArticleManagerDAO
|
||||
public function addArticle($title, $content, $author, $category, $tags);
|
||||
|
||||
/**
|
||||
* Ein angemeldeter Nutzer bearbeitet einen Beitrag.
|
||||
* $id ID des Beitrags
|
||||
* $title Titel des Beitrags
|
||||
* $content Der Inhalt des Beitrags
|
||||
* $author dem Author des des Beitrags (NID oder email)
|
||||
* Ändert den gespeicherten Beitrag eines übergebenen Beitrags und eines Autors.
|
||||
* Es wird geprüft, ob der zu änderne Beitrag existiert und ob der übergebene Autor der Autor des originalen
|
||||
* Beitrages ist.
|
||||
* @param $id
|
||||
* @param $article
|
||||
* @param $author
|
||||
* @return void
|
||||
*
|
||||
* Mögliche Exceptions:
|
||||
* TODO Fehlerbeschreibung hinzufügen
|
||||
* TODO: Fehlerbeschreibung hinzufügen
|
||||
*/
|
||||
public function updateArticle($id, $title, $content, $author);
|
||||
public function updateArticle($id, $article, $author);
|
||||
|
||||
/*
|
||||
* Ein angemeldeter Nutzer löscht einen seiner Beiträge.
|
||||
* $id ID des Beitrags
|
||||
* $title Titel des Beitrags
|
||||
* $content Der Inhalt des Beitrags
|
||||
* $author dem Author des des Beitrags (NID oder email)
|
||||
/**
|
||||
* Löscht einen Beitrag aus übergebener ID.
|
||||
* @param $id
|
||||
* @return void
|
||||
*
|
||||
* Mögliche Exceptions:
|
||||
* TODO Fehlerbeschreibung hinzufügen
|
||||
* TODO: Fehlerbeschreibung hinzufügen
|
||||
*/
|
||||
public function deleteArticle($id);
|
||||
|
||||
@@ -62,6 +60,12 @@ interface ArticleManagerDAO
|
||||
*/
|
||||
public function getAllArticles();
|
||||
|
||||
/**
|
||||
* Gibt alle Beiträge eines Nutzer mit einer gegebenen ID aus.
|
||||
* @param $author
|
||||
* @return Article[]
|
||||
*/
|
||||
public function getArticlesByAuthor($author);
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -62,14 +62,65 @@ class LocalArticleManager implements ArticleManagerDAO {
|
||||
$this->saveArticle($articles);
|
||||
}
|
||||
|
||||
public function updateArticle($id, $title, $content, $author)
|
||||
public function updateArticle($id, $article, $author)
|
||||
{
|
||||
// TODO: Implement updateArticle() method.
|
||||
if (empty($article)) {
|
||||
// TODO: Implement Exception.
|
||||
return;
|
||||
}
|
||||
|
||||
// Berechtigungsprüfung:
|
||||
if ($article->getAuthor() !== $author) {
|
||||
// TODO: Implement Exception.
|
||||
return;
|
||||
}
|
||||
|
||||
// Beitrag aktualisieren:
|
||||
$articles = $this->getAllArticles();
|
||||
$updated = false;
|
||||
|
||||
foreach ($articles as $index => $storedArticle) {
|
||||
if (isset($storedArticle['id']) && $storedArticle['id'] == $id) {
|
||||
$articles[$index] = [
|
||||
"id" => $id,
|
||||
"title" => $article->getTitle(),
|
||||
"content" => $article->getContent(),
|
||||
"author" => $author,
|
||||
"category" => $article->getCategory(),
|
||||
"tags" => $article->getTags(),
|
||||
"creationDate" => $article->getCreationDate()
|
||||
];
|
||||
$updated = true;
|
||||
break;
|
||||
}else{
|
||||
// TODO: Implement Exception.
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Nur speichern, wenn Beitrag geändert wurde:
|
||||
if ($updated) {
|
||||
$this->saveArticle($articles);
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteArticle($id)
|
||||
{
|
||||
// TODO: Implement deleteArticle() method.
|
||||
$articles = $this->getAllArticles();
|
||||
$articleFound = false;
|
||||
|
||||
foreach ($articles as $index => $article) {
|
||||
if (isset($article['id']) && $article['id'] == $id) {
|
||||
unset($articles[$index]);
|
||||
$articleFound = true;
|
||||
break; // Schleife abbrechen, da die ID eindeutig ist
|
||||
}
|
||||
}
|
||||
|
||||
if ($articleFound) {
|
||||
// array_values stellt sicher, dass die Array-Keys wieder fortlaufend bei 0 beginnen
|
||||
$this->saveArticle(array_values($articles));
|
||||
}
|
||||
}
|
||||
|
||||
public function getArticle($id)
|
||||
@@ -97,5 +148,25 @@ class LocalArticleManager implements ArticleManagerDAO {
|
||||
return is_array($articles) ? $articles : [];
|
||||
}
|
||||
|
||||
public function getArticlesByAuthor($author)
|
||||
{
|
||||
$articles = $this->getAllArticles();
|
||||
$filteredArticles = [];
|
||||
|
||||
foreach ($articles as $article) {
|
||||
if (isset($article['author']) && $article['author'] == $author) {
|
||||
$filteredArticles[] = new Article(
|
||||
intval($article['id']),
|
||||
$article['title'],
|
||||
$article['content'],
|
||||
$article['author'],
|
||||
$article['category'],
|
||||
$article['tags'],
|
||||
$article['creationDate']
|
||||
);
|
||||
}
|
||||
}
|
||||
return $filteredArticles;
|
||||
}
|
||||
}
|
||||
?>
|
||||
Reference in New Issue
Block a user