Fach- und Themendaten umstrukturiert

This commit is contained in:
Matthias Grief
2024-12-05 17:49:41 +01:00
committed by Eric Blommel
parent 294260c019
commit 7a146d8982
3 changed files with 63 additions and 14 deletions

View File

@@ -0,0 +1,51 @@
<?php
/**
* Konfigurationsdaten
*/
class Config
{
/**
* @return string Verzeichnis für generelle Konfigurationsdaten
*/
public static function getConfigDirectory(): string
{
return "config/";
}
/**
* @return string Verzeichnis für Fächer
*/
public static function getSubjectsDirectory(): string
{
return self::getConfigDirectory() . "subjects/";
}
/**
* @param string $subjectId ID des Faches
* @return string Verzeichnis des Faches
*/
public static function getSubjectDirectory(string $subjectId): string
{
return self::getSubjectsDirectory() . $subjectId . "/";
}
/**
* @param string $subjectId ID des Faches
* @return string Verzeichnis der Themen des Faches
*/
public static function getTopicsDirectory(string $subjectId): string
{
return self::getSubjectDirectory($subjectId) . "topics/";
}
/**
* @param string $subjectId ID des Faches
* @param string $topicId ID des Themas
* @return string Verzeichnis des Themas
*/
public static function getTopicDirectory(string $subjectId, string $topicId): string
{
return self::getTopicsDirectory($subjectId) . $topicId . "/";
}
}

View File

@@ -1,9 +1,10 @@
<?php
require_once("Config.php");
require_once("Util.php");
require_once("TopicData.php");
/**
* Stellt alle relevanten Daten für ein einzeles Fach bereit
* Stellt alle relevanten Daten für ein einzelnes Fach bereit
*
*/
class SubjectData
@@ -47,8 +48,7 @@ class SubjectData
{
$result = array();
$subjectDirectory = "config/subjects";
$subjectNames = scandir($subjectDirectory);
$subjectNames = scandir(Config::getSubjectsDirectory());
usort($subjectNames, function ($a, $b) {
return strcmp($a, $b);
@@ -79,10 +79,11 @@ class SubjectData
{
$result = new SubjectData();
$subjectId = Util::removeIllegalCharacters($subjectId);
if (Util::containsIllegalCharacters($subjectId)) {
return null;
}
$subjectDirectory = "config/subjects/$subjectId";
$filename = "$subjectDirectory/properties.json";
$filename = Config::getSubjectDirectory($subjectId) . "properties.json";
$data = Util::parseJsonFromFile($filename);
if (!isset($data)) {
return null;

View File

@@ -1,4 +1,5 @@
<?php
require_once("Config.php");
require_once("Util.php");
class TopicData
@@ -52,8 +53,7 @@ class TopicData
{
$result = array();
$topicDirectory = "config/subjects/$subjectId/topics";
$topicNames = scandir($topicDirectory);
$topicNames = scandir(Config::getTopicsDirectory($subjectId));
usort($topicNames, function ($a, $b) {
return strcmp($a, $b);
@@ -87,9 +87,7 @@ class TopicData
$subjectId = Util::removeIllegalCharacters($subjectId);
$topicId = Util::removeIllegalCharacters($topicId);
$topicsDirectory = "config/subjects/$subjectId/topics";
$topicDataDirectory = "$topicsDirectory/$topicId";
$data = Util::parseJsonFromFile("$topicDataDirectory/properties.json");
$data = Util::parseJsonFromFile(Config::getTopicDirectory($subjectId, $topicId) . "properties.json");
if (!isset($data)) {
return null;
}
@@ -126,15 +124,14 @@ class TopicData
$result->files = array();
}
$article = Util::readFileContent("$topicDataDirectory/article.html");
$article = Util::readFileContent(Config::getTopicDirectory($subjectId, $topicId) . "article.html");
if (!isset($article)) {
$article = "Kein Erklärtext vorhanden";
}
$article = str_replace('$TOPICPATH', $topicDataDirectory, $article);
$article = str_replace('$TOPICPATH', Config::getTopicDirectory($subjectId, $topicId), $article);
$result->article = $article;
return $result;
}
}