From 7c5dfdfa92e61331cb50d3c4668cb5140656afa0 Mon Sep 17 00:00:00 2001 From: Matthias Grief Date: Sun, 8 Dec 2024 16:02:29 +0100 Subject: [PATCH] =?UTF-8?q?Hinzuf=C3=BCgen=20von=20downloadbaren=20Dateien?= =?UTF-8?q?=20eingebaut?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- webseite/classes/TopicData.php | 43 ++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/webseite/classes/TopicData.php b/webseite/classes/TopicData.php index 2411a71..3adea50 100644 --- a/webseite/classes/TopicData.php +++ b/webseite/classes/TopicData.php @@ -179,6 +179,49 @@ class TopicData return true; } + /** + * Lädt eine Datei als Download zum Thema hoch + * @param string $name Dateiname von User + * @param string $tmp_name Temporärer Pfad zur hochgeladenen Datei + * @return bool true, wenn erfolgreich, sonst false + */ + private function addDownload(string $name, string $tmp_name): bool + { + if(!move_uploaded_file($tmp_name, Config::getTopicDirectory($this->getSubjectId() , $this->getId()) . "downloads/" . $name)) { + return false; + } + + return true; + } + + /** + * Lädt eine oder mehrere Dateien als Downloads zu diesem Thema hoch + * @param array $files Das array mit den Dateidaten, normalerweise z.B. $_FILES['html-input-name'] + * @return bool true, wenn erfolgreich, sonst false + */ + public function addDownloads(array $files): bool + { + if(count($files) == 0) { + return false; + } + + if(!isset($files["name"]) || !isset($files["tmp_name"])) { + return false; + } + + if(!is_array($files["name"])) { + return $this->addDownload($files["name"], $files["tmp_name"]); + } + + foreach ($files["name"] as $key => $name) { + if(!$this->addDownload($name, $files["tmp_name"][$key])) { + return false; + } + } + + return true; + } + /** * Löscht das Thema inklusive aller zugehörigen Dateien * @return bool true, wenn erfolgreich gelöscht, sonst false