From f5e014ed87d2ca7a12997d6a6aab2005639283d2 Mon Sep 17 00:00:00 2001 From: Moritz Strohm <strohm@data-quest.de> Date: Fri, 11 Aug 2023 15:19:35 +0000 Subject: [PATCH] Fix for BIESt 2997, re #2997 Merge request studip/studip!2009 --- app/controllers/file.php | 15 ++++++++++----- app/views/file/choose_destination.php | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/controllers/file.php b/app/controllers/file.php index 15bca3dbe08..06c5ea94386 100644 --- a/app/controllers/file.php +++ b/app/controllers/file.php @@ -737,6 +737,7 @@ class FileController extends AuthenticatedController } $this->copymode = $copymode; $this->fileref_id = $fileref_id; + $this->is_folder = false; if (Request::get("from_plugin")) { if (is_array($fileref_id)) { @@ -756,13 +757,16 @@ class FileController extends AuthenticatedController throw new Trails_Exception(404, _('Plugin existiert nicht.')); } - if (!Request::get("isfolder")) { - $this->file_ref = $plugin->getPreparedFile($file_id); - } else { - $this->parent_folder = $plugin->getFolder($file_id); + $this->file_ref = $plugin->getPreparedFile($file_id); + if (!$this->file_ref) { + //Maybe it is a folder: + $folder = $plugin->getFolder($file_id); + if ($folder instanceof FolderType) { + $this->parent_folder = $folder->getParent(); + $this->is_folder = true; + } } } else { - if (is_array($fileref_id)) { $this->file_ref = FileRef::find($fileref_id[0]); } else { @@ -782,6 +786,7 @@ class FileController extends AuthenticatedController if ($folder) { $this->parent_folder = Folder::find($folder->parent_id); $this->parent_folder = $this->parent_folder->getTypedFolder(); + $this->is_folder = true; } } elseif (!$this->parent_folder) { throw new AccessDeniedException(); diff --git a/app/views/file/choose_destination.php b/app/views/file/choose_destination.php index 21ecb138751..fa5e73d6e4f 100644 --- a/app/views/file/choose_destination.php +++ b/app/views/file/choose_destination.php @@ -3,8 +3,9 @@ $options = array_filter([ 'from_plugin' => Request::get('from_plugin'), 'to_folder_id' => Request::get('to_folder_id'), 'copymode' => Request::get('copymode', $copymode), - 'isfolder' => Request::get('isfolder'), + 'isfolder' => Request::get('isfolder', $is_folder), 'fileref_id' => Request::getArray('fileref_id') ?: $fileref_id, + 'ids' => Request::getArray('ids'), 'direct_parent' => true, ], function ($value) { return $value !== null; -- GitLab