statt txt -> json
This commit is contained in:
+16
-4
@@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/**
|
||||||
* Klasse: Artikel
|
* Klasse: Artikel
|
||||||
* Diese Klasse stellt alle Daten eines Artikels (Beitrag) bereit
|
* Diese Klasse stellt alle Daten eines Artikels (Beitrag) bereit
|
||||||
*
|
*
|
||||||
@@ -15,6 +15,8 @@ class Article
|
|||||||
private $category;
|
private $category;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Konstruktor
|
||||||
|
*
|
||||||
* @param $id integer ID des Beitrages
|
* @param $id integer ID des Beitrages
|
||||||
* @param $title string Titel des Beitrags
|
* @param $title string Titel des Beitrags
|
||||||
* @param $content string Inhalt des Beitrags
|
* @param $content string Inhalt des Beitrags
|
||||||
@@ -22,19 +24,21 @@ class Article
|
|||||||
* @param $category string Kategorie des Beitrages
|
* @param $category string Kategorie des Beitrages
|
||||||
* @param $date
|
* @param $date
|
||||||
* @param $tags string[] optionale Schlagworte für eine bessere Suche
|
* @param $tags string[] optionale Schlagworte für eine bessere Suche
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public function __construct($id, $title, $content, $author, $date)
|
public function __construct($id, $title, $content, $author, $date, $category, array $tags)
|
||||||
{
|
{
|
||||||
$this->id = $id;
|
$this->id = $id;
|
||||||
$this->title = $title;
|
$this->title = $title;
|
||||||
$this->content = $content;
|
$this->content = $content;
|
||||||
$this->author = $author;
|
$this->author = $author;
|
||||||
$this->date = $date;
|
$this->date = $date;
|
||||||
|
$this->category = $category;
|
||||||
|
$this->tags = $tags;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt die ID eines Artikels zurück.
|
* Gibt die ID eines Artikels zurück.
|
||||||
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getId()
|
public function getId()
|
||||||
{
|
{
|
||||||
@@ -43,6 +47,7 @@ class Article
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt den Titel eines Artikels zurück.
|
* Gibt den Titel eines Artikels zurück.
|
||||||
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getTitle()
|
public function getTitle()
|
||||||
{
|
{
|
||||||
@@ -50,7 +55,9 @@ class Article
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Setzt den Titel eines Artikels.
|
* Setzt den Titel eines Artikels
|
||||||
|
* @param $title
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setTitle($title)
|
public function setTitle($title)
|
||||||
{
|
{
|
||||||
@@ -60,6 +67,7 @@ class Article
|
|||||||
/**
|
/**
|
||||||
* Gibt den Content eines Artikels zurück.
|
* Gibt den Content eines Artikels zurück.
|
||||||
* TODO: Content muss noch definiert werden.
|
* TODO: Content muss noch definiert werden.
|
||||||
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getContent()
|
public function getContent()
|
||||||
{
|
{
|
||||||
@@ -69,6 +77,8 @@ class Article
|
|||||||
/**
|
/**
|
||||||
* Setzt den Content eines Artikels.
|
* Setzt den Content eines Artikels.
|
||||||
* TODO: Content muss noch definiert werden.
|
* TODO: Content muss noch definiert werden.
|
||||||
|
* @param $content
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function setContent($content)
|
public function setContent($content)
|
||||||
{
|
{
|
||||||
@@ -77,6 +87,7 @@ class Article
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt den Autor eines Artikels zurück.
|
* Gibt den Autor eines Artikels zurück.
|
||||||
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getAuthor()
|
public function getAuthor()
|
||||||
{
|
{
|
||||||
@@ -85,6 +96,7 @@ class Article
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt das Veröffentlichungsdatum des Artikels zurück.
|
* Gibt das Veröffentlichungsdatum des Artikels zurück.
|
||||||
|
* @return mixed
|
||||||
*/
|
*/
|
||||||
public function getDate()
|
public function getDate()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,15 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
require_once 'ArticleManagerDAO.php';
|
require_once $abs_path . 'ArticleManagerDAO.php';
|
||||||
/**
|
/**
|
||||||
* Klasse: Eine lokale Lösung der DatenbankDAO.
|
* Klasse: Eine lokale Lösung des ArticleManagerDAO.
|
||||||
* schreibt zunächst Daten lokal in das Verzeichnis und kann diese wieder auslesen.
|
* Schreibt zunächst Daten lokal in das Verzeichnis und kann diese wieder auslesen.
|
||||||
*
|
*
|
||||||
* @author Niklas Ortmann
|
* @author Niklas Ortmann
|
||||||
*/
|
*/
|
||||||
class ArticleManager implements ArticleManagerDAO {
|
class ArticleManager implements ArticleManagerDAO {
|
||||||
|
|
||||||
|
private string $file = $abs_path . "data/articles.json";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gibt die Datenbank-Instanz zurück.
|
* Gibt die ArticleManager-Instanz zurück.
|
||||||
|
* @return ArticleManager
|
||||||
*/
|
*/
|
||||||
public static function getInstance()
|
public static function getInstance()
|
||||||
{
|
{
|
||||||
@@ -20,38 +23,34 @@ class ArticleManager implements ArticleManagerDAO {
|
|||||||
return self::$instance;
|
return self::$instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prüft, ob die lokalen txt-Dateien existieren.
|
* Speichert alle Artikel/Beiträge in der Datei.
|
||||||
* Wenn nicht, werden diese erstellt.
|
* @param $articles
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function saveArticle($articles)
|
||||||
{
|
{
|
||||||
|
file_put_contents(
|
||||||
|
$this->file,
|
||||||
|
json_encode($articles, JSON_PRETTY_PRINT)
|
||||||
|
);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function newArticle($article) {
|
public function addArticle($title, $content, $author, $category, array $tags)
|
||||||
$newData = array(
|
{
|
||||||
"title" => $article->getTitle(),
|
$articles = $this->getAllArticles();
|
||||||
"content" => $article->getContent(),
|
|
||||||
"author" => $article->getAuthor(),
|
$articles[] = [
|
||||||
"category" => $article->getCategory(),
|
"id" => count($articles)+1,
|
||||||
//"tags" => $article->getTags(), TODO: Später hinzufügen
|
"title" => $title,
|
||||||
"date" => date("d.m.Y, H:i")
|
"content" => $content,
|
||||||
);
|
"author" => $author,
|
||||||
$newData = base64_encode(serialize($newData));
|
"category" => $category,
|
||||||
if (!file_exists("articles.txt")) {
|
"tags" => $tags
|
||||||
$newData = fopen("articles.txt", "xb");
|
];
|
||||||
fclose($newData);
|
|
||||||
}
|
$this->saveArticle($articles);
|
||||||
$previousData = file_get_contents("articles.txt");
|
|
||||||
if (file_put_contents("articles.txt", "$newData\n$previousData")) {
|
|
||||||
// TODO: Vernünftige Rückmeldung implementieren.
|
|
||||||
echo "Artikel erfolgreich gespeichert!";
|
|
||||||
} else {
|
|
||||||
// TODO: passende Exceptions werfen.
|
|
||||||
echo "Fehler!";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateArticle($id, $title, $content, $author)
|
public function updateArticle($id, $title, $content, $author)
|
||||||
@@ -71,7 +70,14 @@ class ArticleManager implements ArticleManagerDAO {
|
|||||||
|
|
||||||
public function getAllArticles()
|
public function getAllArticles()
|
||||||
{
|
{
|
||||||
// TODO: Implement getAllArticles() method.
|
if (!file_exists($this->file)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$json = file_get_contents($this->file);
|
||||||
|
$articles = json_decode($json, true);
|
||||||
|
|
||||||
|
return is_array($articles) ? $articles : [];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ interface ArticleManagerDAO
|
|||||||
* Mögliche Exceptions:
|
* Mögliche Exceptions:
|
||||||
* TODO Fehlerbeschreibung hinzufügen & tags hinzufügen
|
* TODO Fehlerbeschreibung hinzufügen & tags hinzufügen
|
||||||
*/
|
*/
|
||||||
public function newArticle($title, $content, $author, $category);
|
public function addArticle($title, $content, $author, $category, array $tags);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Ein angemeldeter Nutzer bearbeitet einen Beitrag.
|
* Ein angemeldeter Nutzer bearbeitet einen Beitrag.
|
||||||
@@ -53,9 +53,11 @@ interface ArticleManagerDAO
|
|||||||
*/
|
*/
|
||||||
public function getArticle($id);
|
public function getArticle($id);
|
||||||
|
|
||||||
/*
|
/**
|
||||||
* Alle Beiträge aufrufen.
|
* Alle Beiträge aufrufen.
|
||||||
*
|
*
|
||||||
|
* @return Article
|
||||||
|
*
|
||||||
* Mögliche Exceptions:
|
* Mögliche Exceptions:
|
||||||
* TODO Fehlerbeschreibung hinzufügen
|
* TODO Fehlerbeschreibung hinzufügen
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
class UserDAO {
|
||||||
|
|
||||||
|
private string $file = "data/users.json";
|
||||||
|
|
||||||
|
private function loadUsers() {
|
||||||
|
if (!file_exists($this->file)) {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
|
||||||
|
$json = file_get_contents($this->file);
|
||||||
|
$users = json_decode($json, true);
|
||||||
|
|
||||||
|
return is_array($users) ? $users : [];
|
||||||
|
}
|
||||||
|
|
||||||
|
private function saveUsers($users) {
|
||||||
|
file_put_contents(
|
||||||
|
$this->file,
|
||||||
|
json_encode($users, JSON_PRETTY_PRINT)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findUser($email) {
|
||||||
|
$users = $this->loadUsers();
|
||||||
|
|
||||||
|
foreach ($users as $user) {
|
||||||
|
if ($user["email"] === $email) {
|
||||||
|
return $user;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function addUser($email, $username, $password) {
|
||||||
|
$users = $this->loadUsers();
|
||||||
|
|
||||||
|
$users[] = [
|
||||||
|
"email" => $email,
|
||||||
|
"username" => $username,
|
||||||
|
"password" => $password
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->saveUsers($users);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deleteUser($email) {
|
||||||
|
$users = $this->loadUsers();
|
||||||
|
|
||||||
|
foreach ($users as $i => $user) {
|
||||||
|
if ($user["email"] === $email) {
|
||||||
|
unset($users[$i]);
|
||||||
|
$users = array_values($users);
|
||||||
|
$this->saveUsers($users);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user