c52834aa0d
Article-Klasse ist nun syntaktisch korrekt. getArticle gibt nun als Rückgabe einen Typ Article zurück
116 lines
4.9 KiB
PHP
116 lines
4.9 KiB
PHP
<?php
|
||
require_once 'ArticleManagerDAO.php';
|
||
require_once 'Article.php';
|
||
/**
|
||
* Klasse: Eine lokale Lösung des ArticleManagerDAO.
|
||
* Schreibt zunächst Daten lokal in das Verzeichnis und kann diese wieder auslesen.
|
||
*
|
||
* @author Niklas Ortmann
|
||
*/
|
||
class LocalArticleManager implements ArticleManagerDAO {
|
||
|
||
private $file = '../../data/articles.json';
|
||
private static $instance = null;
|
||
|
||
/**
|
||
* Gibt die LocalArticleManager-Instanz zurück.
|
||
* @return LocalArticleManager
|
||
*/
|
||
public static function getInstance()
|
||
{
|
||
if (self::$instance == null) {
|
||
self::$instance = new LocalArticleManager();
|
||
}
|
||
// Dummy-Beiträge:
|
||
self::$instance->addArticle("Satz des Pythagoras", "Der Satz des Pythagoras wurde von dem griechischen Philosophen Pythagoras von Samos formuliert und im
|
||
dritten Jahrhundert vor Christus veröffentlicht. In der beigefügten Abbildung sehen wir ein rechtwinkliges Dreieck, dessen drei Seiten die Längen a, b und c
|
||
besitzen. Auf jeder Seite ist ein Quadrat konstruiert. Das Quadrat auf der Seite a hat die Fläche a2, das
|
||
Quadrat auf der Seite b hat die Fläche b2 und das Quadrat auf der Seite c hat die Fläche c2. Der Satz des
|
||
Pythagoras besagt, dass die Summe der Flächen der beiden kleineren Quadrate gleich der Fläche des größten
|
||
Quadrats ist. Das bedeutet, dass a^2+b^2=c^2 (Satz des Pythagoras).", "max.mustermann", "Mathe", "Dreiecke, Dreiecksseiten berechnen");
|
||
|
||
self::$instance->addArticle("Tunneleffekt", "Der Tunneleffekt ist ein quantenmechanisches Phänomen, bei dem Teilchen – vor allem Elektronen – eine
|
||
Energiebarriere überwinden können, obwohl sie nach den Regeln der klassischen Physik nicht genügend Energie
|
||
dafür besitzen. In der klassischen Vorstellung müsste ein Elektron entweder genügend Energie haben, um über
|
||
eine Barriere zu „springen“, oder es würde vollständig zurückgeworfen. In der Quantenphysik wird ein Elektron
|
||
jedoch nicht als punktförmiges Teilchen beschrieben, sondern als Wellenfunktion, die sich räumlich ausdehnt.
|
||
Dadurch besteht eine endliche Wahrscheinlichkeit, dass sich das Elektron auf der anderen Seite einer Barriere
|
||
befindet (Griffiths & Schroeter, 2018).", "max.mustermann", "Physik", "Quantenphysik, Energie");
|
||
|
||
self::$instance->addArticle("Datenschutz vs Datensicherheit", "Datenschutz ist in unserer digital vernetzten Welt allgegenwärtig – ob in sozialen Netzwerken, beim
|
||
Online-Shopping oder dem Einsatz von Bonuskarten, bei der Auswertung von Konsumverhalten und selbstverständlich
|
||
auch im schulischen Kontext. Was ist Datenschutz? Datenschutz bedeutet, dass persönliche Daten nur gesammelt, gespeichert und verwendet werden dürfen, wenn
|
||
es wirklich nötig ist – und nur für klar festgelegte Zwecke. Es geht darum, die Privatsphäre von Menschen
|
||
zu schützen.Was ist Datensicherheit? Datensicherheit umfasst alle technischen und organisatorischen Maßnahmen, die verhindern sollen, dass Daten
|
||
verloren gehen, beschädigt oder unbemerkt verändert werden. Sie schützt Informationen vor Missbrauch.", "max.mustermann", "Informatik", "Daten, DSGVO");
|
||
|
||
return self::$instance;
|
||
}
|
||
|
||
/**
|
||
* Speichert alle Artikel/Beiträge in der Datei.
|
||
* @param $articles
|
||
* @return void
|
||
*/
|
||
public function saveArticle($articles)
|
||
{
|
||
file_put_contents(
|
||
$this->file,
|
||
json_encode($articles, JSON_PRETTY_PRINT)
|
||
);
|
||
}
|
||
|
||
public function addArticle($title, $content, $author, $category, $tags)
|
||
{
|
||
$articles = $this->getAllArticles();
|
||
|
||
$articles[] = [
|
||
"id" => count($articles)+1,
|
||
"title" => $title,
|
||
"content" => $content,
|
||
"author" => $author,
|
||
"category" => $category,
|
||
"tags" => $tags,
|
||
"creationDate" => date("Y-m-d H:i:s")
|
||
];
|
||
|
||
$this->saveArticle($articles);
|
||
}
|
||
|
||
public function updateArticle($id, $title, $content, $author)
|
||
{
|
||
// TODO: Implement updateArticle() method.
|
||
}
|
||
|
||
public function deleteArticle($id)
|
||
{
|
||
// TODO: Implement deleteArticle() method.
|
||
}
|
||
|
||
public function getArticle($id)
|
||
{
|
||
$articles = $this->getAllArticles();
|
||
|
||
foreach ($articles as $article) {
|
||
if (isset($article['id']) && $article['id'] == $id) {
|
||
return new Article(intval($article['id']), $article['title'], $article['content'], $article['author'], $article['category'], $article['tags'], $article['creationDate']);
|
||
}
|
||
}
|
||
|
||
return null;
|
||
}
|
||
|
||
public function getAllArticles()
|
||
{
|
||
if (!file_exists($this->file)) {
|
||
return [];
|
||
}
|
||
|
||
$json = file_get_contents($this->file);
|
||
$articles = json_decode($json, true);
|
||
|
||
return is_array($articles) ? $articles : [];
|
||
}
|
||
|
||
}
|
||
?>
|