id] = $subjectData; } return $result; } /** * Lädt ein Fach über eine gegebene ID * @param $subjectId string Die eindeutige ID des Faches * @return SubjectData|null Das Fach zu der ID oder null, wenn kein entsprechendes Fach gefunden wurde */ public static function fromName(string $subjectId): SubjectData|null { $result = new SubjectData(); if (Util::containsIllegalCharacters($subjectId)) { return null; } $filename = Config::getSubjectDirectory($subjectId) . "properties.json"; $data = Util::parseJsonFromFile($filename); if (!isset($data)) { return null; } $result->id = $subjectId; if (isset($data->displayName)) { $result->displayName = $data->displayName; } else { return null; } if (isset($data->description)) { $result->description = $data->description; } else { return null; } if (isset($data->color)) { $result->color = $data->color; } else { return null; } if (isset($data->icon)) { $result->icon = $data->icon; } else { return null; } $result->topics = TopicData::getAll($subjectId); return $result; } /** * Schreibt alle Daten in Dateien * @return bool true, wenn erfolgreich, sonst false */ public function save(): bool { $data = array(); $data["displayName"] = $this->displayName; $data["description"] = $this->description; $data["color"] = $this->color; $data["icon"] = $this->icon; $json = json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); if (!$json) { return false; } $subjectDirectory = Config::getSubjectDirectory($this->getId()); if (!is_dir($subjectDirectory)) { mkdir($subjectDirectory, 0777, true); } if (!Util::writeFileContent($subjectDirectory . "properties.json", $json)) { return false; } return true; } /** * Löscht das Fach inklusive aller zugehörigen Themen * @return bool true, wenn erfolgreich, sonst false */ public function delete(): bool { if(!Util::delete(Config::getSubjectDirectory($this->getId()))) { return false; } return true; } public function getId(): string { return $this->id; } public function setId(string $id): void { $this->id = $id; } public function getDisplayName(): string { return $this->displayName; } public function setDisplayName(string $displayName): void { $this->displayName = $displayName; } public function getDescription(): string { return $this->description; } public function setDescription(string $description): void { $this->description = $description; } public function getColor(): string { return $this->color; } public function setColor(string $color): void { $this->color = $color; } public function getIcon(): string { return $this->icon; } public function setIcon(string $icon): void { $this->icon = $icon; } public function getTopics(): array { return $this->topics; } public function setTopics(array $topics): void { $this->topics = $topics; } }