From f684be3f1120a9575b6809a3150a4325405f0cec Mon Sep 17 00:00:00 2001 From: Ron Lucke <lucke@elan-ev.de> Date: Thu, 10 Aug 2023 11:03:01 +0000 Subject: [PATCH] fix #2933 Closes #2933 Merge request studip/studip!2008 --- .../Courseware/BlockTypes/BlockType.php | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/lib/models/Courseware/BlockTypes/BlockType.php b/lib/models/Courseware/BlockTypes/BlockType.php index 50bcc4254f1..88f07b13f4c 100644 --- a/lib/models/Courseware/BlockTypes/BlockType.php +++ b/lib/models/Courseware/BlockTypes/BlockType.php @@ -332,7 +332,13 @@ abstract class BlockType { static $file_map = []; - if ($this->block->container->structural_element->range_id === $rangeId) { + $file_ref = \FileRef::find($fileId); + + if (!$file_ref) { + return ''; + } + + if ($file_ref->getRangeCourseId() === $rangeId) { return $fileId; } @@ -341,16 +347,15 @@ abstract class BlockType } $user = \User::findCurrent(); - if ($file_ref = \FileRef::find($fileId)) { - $copiedFile = \FileManager::copyFile( - $file_ref->getFiletype(), - $this->getDestinationFolder($user, $rangeId), - $user - ); + $destinationFolder = $this->getDestinationFolder($user, $rangeId); + $copiedFile = \FileManager::copyFile( + $file_ref->getFiletype(), + $destinationFolder, + $user + ); - if (is_object($copiedFile)) { - return $file_map[$fileId] = $copiedFile->id; - } + if (is_object($copiedFile)) { + return $file_map[$fileId] = $copiedFile->id; } return ''; @@ -368,7 +373,13 @@ abstract class BlockType { static $folder_map = []; - if ($this->block->container->structural_element->range_id === $rangeId) { + $sourceFolder = \Folder::find($folderId); + + if (!$sourceFolder) { + return ''; + } + + if ($sourceFolder->getRangeCourseId() === $rangeId) { return $folderId; } @@ -378,16 +389,14 @@ abstract class BlockType $user = \User::findCurrent(); $destinationFolder = $this->getDestinationFolder($user, $rangeId); - if ($sourceFolder = \Folder::find($folderId)) { - $copiedFolder = \FileManager::copyFolder( - $sourceFolder->getTypedFolder(), - $destinationFolder, - $user - ); + $copiedFolder = \FileManager::copyFolder( + $sourceFolder->getTypedFolder(), + $destinationFolder, + $user + ); - if (is_object($copiedFolder)) { - return $folder_map[$folderId] = $copiedFolder->id; - } + if (is_object($copiedFolder)) { + return $folder_map[$folderId] = $copiedFolder->id; } return ''; -- GitLab