From ae61e7fbdffe7640dd5b6f4cbc82fd6a1eb60487 Mon Sep 17 00:00:00 2001
From: Murtaza Sultani <sultani@data-quest.de>
Date: Wed, 10 Jul 2024 15:53:59 +0000
Subject: [PATCH] =?UTF-8?q?Resolve=20"Methode=20"Folder::findTopFolder()"?=
 =?UTF-8?q?=20pr=C3=BCft=20nicht=20auf=20Typ=20"RootFolder""?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Closes #4008

Merge request studip/studip!3198
---
 lib/filesystem/FileManager.php | 4 ++--
 lib/models/Folder.php          | 9 +++++----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/lib/filesystem/FileManager.php b/lib/filesystem/FileManager.php
index 55cd769bc7f..13527a9004b 100644
--- a/lib/filesystem/FileManager.php
+++ b/lib/filesystem/FileManager.php
@@ -1667,7 +1667,7 @@ class FileManager
      */
     public static function getInboxFolder(User $user)
     {
-        $top_folder = Folder::findTopFolder($user->id, 'user');
+        $top_folder = Folder::findTopFolder($user->id);
         if (!$top_folder) {
             return null;
         }
@@ -1710,7 +1710,7 @@ class FileManager
      */
     public static function getOutboxFolder(User $user)
     {
-        $top_folder = Folder::findTopFolder($user->id, 'user');
+        $top_folder = Folder::findTopFolder($user->id);
         if (!$top_folder) {
             return null;
         }
diff --git a/lib/models/Folder.php b/lib/models/Folder.php
index 7b666219eb0..b73571c133f 100644
--- a/lib/models/Folder.php
+++ b/lib/models/Folder.php
@@ -370,14 +370,15 @@ class Folder extends SimpleORMap implements FeedbackRange
      * Note that the range_id parameter is mandatory!
      *
      * @param string range_id The ID of the Stud.IP object whose top folder shall be found.
+     * @param string folder_type The expected folder type related to the Stud.IP object (defaults to RootFolder, use MessageFolder for the top folder of a message)
      *
      * @returns Folder|null Folder object on success or null, if no folder can be created.
      **/
-    public static function findTopFolder($range_id)
+    public static function findTopFolder($range_id, $folder_type = 'RootFolder')
     {
         $top_folder = self::findOneBySQL(
-            "range_id = ? AND parent_id=''",
-            [$range_id]
+            "range_id = ? AND folder_type = ? AND parent_id=''",
+            [$range_id, $folder_type]
         );
 
         //top_folder may not exist!
@@ -390,7 +391,7 @@ class Folder extends SimpleORMap implements FeedbackRange
                 return null;
             }
 
-            $top_folder = self::createTopFolder($range_id, $range_type);
+            $top_folder = self::createTopFolder($range_id, $range_type, $folder_type);
         }
 
         return $top_folder;
-- 
GitLab