From 2e40475f6dae7bece3a5523c3cd499c845f69029 Mon Sep 17 00:00:00 2001 From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de> Date: Fri, 14 Jul 2023 06:22:17 +0000 Subject: [PATCH] avoid API change in BlockType class, re #2766 Merge request studip/studip!1927 --- lib/models/Courseware/Block.php | 8 ++++---- lib/models/Courseware/BlockTypes/Audio.php | 8 +++----- lib/models/Courseware/BlockTypes/BeforeAfter.php | 8 +++----- lib/models/Courseware/BlockTypes/BlockType.php | 12 ++---------- lib/models/Courseware/BlockTypes/Canvas.php | 8 +++----- lib/models/Courseware/BlockTypes/DialogCards.php | 7 ++----- lib/models/Courseware/BlockTypes/Document.php | 8 +++----- lib/models/Courseware/BlockTypes/Download.php | 8 +++----- lib/models/Courseware/BlockTypes/Folder.php | 8 +++----- lib/models/Courseware/BlockTypes/Gallery.php | 9 +++------ lib/models/Courseware/BlockTypes/Headline.php | 8 +++----- lib/models/Courseware/BlockTypes/ImageMap.php | 8 +++----- lib/models/Courseware/BlockTypes/Text.php | 6 ++---- lib/models/Courseware/BlockTypes/Video.php | 8 +++----- lib/models/Courseware/Container.php | 8 ++++---- .../Courseware/ContainerTypes/ContainerType.php | 2 +- lib/models/Courseware/StructuralElement.php | 6 ------ 17 files changed, 45 insertions(+), 85 deletions(-) diff --git a/lib/models/Courseware/Block.php b/lib/models/Courseware/Block.php index d311e0fc491..f5d8b202acb 100644 --- a/lib/models/Courseware/Block.php +++ b/lib/models/Courseware/Block.php @@ -178,7 +178,7 @@ class Block extends \SimpleORMap implements \PrivacyObject ] ]; - return json_encode($block, true); + return json_encode($block); } /** @@ -218,18 +218,18 @@ class Block extends \SimpleORMap implements \PrivacyObject $struct = $container->structural_element; $rangeId = $struct->getRangeId(); - $block = self::create([ + $block = self::build([ 'container_id' => $container->id, 'owner_id' => $user->id, 'editor_id' => $user->id, 'edit_blocker_id' => null, 'position' => $container->countBlocks(), 'block_type' => $data->attributes->{'block-type'}, + 'payload' => json_encode($data->attributes->payload), 'visible' => 1, ]); - $dataPayload = (array)$data->attributes->payload; - $block->payload = json_encode($block->type->copyPayload('', $dataPayload), true); + $block->payload = json_encode($block->type->copyPayload($rangeId)); $block->store(); //update Container payload diff --git a/lib/models/Courseware/BlockTypes/Audio.php b/lib/models/Courseware/BlockTypes/Audio.php index 7196f209a74..dd2588a1e5e 100644 --- a/lib/models/Courseware/BlockTypes/Audio.php +++ b/lib/models/Courseware/BlockTypes/Audio.php @@ -74,13 +74,11 @@ class Audio extends BlockType } } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/BeforeAfter.php b/lib/models/Courseware/BlockTypes/BeforeAfter.php index 5ad772cac72..b4f33ca9c08 100644 --- a/lib/models/Courseware/BlockTypes/BeforeAfter.php +++ b/lib/models/Courseware/BlockTypes/BeforeAfter.php @@ -75,13 +75,11 @@ class BeforeAfter extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['before_file_id'])) { + if ('' != $payload['before_file_id']) { $payload['before_file_id'] = $this->copyFileById($payload['before_file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/BlockType.php b/lib/models/Courseware/BlockTypes/BlockType.php index e5526f5866a..50bcc4254f1 100644 --- a/lib/models/Courseware/BlockTypes/BlockType.php +++ b/lib/models/Courseware/BlockTypes/BlockType.php @@ -233,9 +233,9 @@ abstract class BlockType } // TODO: (tgloeggl) DocBlock ergänzen - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - return $payload ?: $this->getPayload(); + return $this->getPayload(); } /** @@ -340,10 +340,6 @@ abstract class BlockType return $file_map[$fileId]; } - if ($rangeId === '') { - $rangeId = $this->block->container->structural_element->range_id; - } - $user = \User::findCurrent(); if ($file_ref = \FileRef::find($fileId)) { $copiedFile = \FileManager::copyFile( @@ -380,10 +376,6 @@ abstract class BlockType return $folder_map[$folderId]; } - if ($rangeId === '') { - $rangeId = $this->block->container->structural_element->range_id; - } - $user = \User::findCurrent(); $destinationFolder = $this->getDestinationFolder($user, $rangeId); if ($sourceFolder = \Folder::find($folderId)) { diff --git a/lib/models/Courseware/BlockTypes/Canvas.php b/lib/models/Courseware/BlockTypes/Canvas.php index 34dc431b5b0..e7b14e99665 100644 --- a/lib/models/Courseware/BlockTypes/Canvas.php +++ b/lib/models/Courseware/BlockTypes/Canvas.php @@ -65,13 +65,11 @@ class Canvas extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/DialogCards.php b/lib/models/Courseware/BlockTypes/DialogCards.php index 62eea5fb3f9..74b843cbe26 100644 --- a/lib/models/Courseware/BlockTypes/DialogCards.php +++ b/lib/models/Courseware/BlockTypes/DialogCards.php @@ -80,12 +80,9 @@ class DialogCards extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } - + $payload = $this->getPayload(); foreach ($payload['cards'] as &$card) { if ('' != $card['front_file_id']) { $card['front_file_id'] = $this->copyFileById($card['front_file_id'], $rangeId); diff --git a/lib/models/Courseware/BlockTypes/Document.php b/lib/models/Courseware/BlockTypes/Document.php index 20950089c5b..db1ba6ee179 100644 --- a/lib/models/Courseware/BlockTypes/Document.php +++ b/lib/models/Courseware/BlockTypes/Document.php @@ -67,13 +67,11 @@ class Document extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/Download.php b/lib/models/Courseware/BlockTypes/Download.php index f53c8c7f288..d736009d181 100644 --- a/lib/models/Courseware/BlockTypes/Download.php +++ b/lib/models/Courseware/BlockTypes/Download.php @@ -61,13 +61,11 @@ class Download extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/Folder.php b/lib/models/Courseware/BlockTypes/Folder.php index d5156b6298d..bc34f854f24 100644 --- a/lib/models/Courseware/BlockTypes/Folder.php +++ b/lib/models/Courseware/BlockTypes/Folder.php @@ -104,13 +104,11 @@ class Folder extends BlockType return \FileRef::findByFolder_id($payload['folder_id']); } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['folder_id'])) { + if ('' != $payload['folder_id']) { $payload['folder_id'] = $this->copyFolderById($payload['folder_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/Gallery.php b/lib/models/Courseware/BlockTypes/Gallery.php index 1d931ea9951..5f9bb0b6d56 100644 --- a/lib/models/Courseware/BlockTypes/Gallery.php +++ b/lib/models/Courseware/BlockTypes/Gallery.php @@ -123,13 +123,10 @@ class Gallery extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } - - if (!empty($payload['folder_id'])) { + $payload = $this->getPayload(); + if ('' != $payload['folder_id']) { $payload['folder_id'] = $this->copyFolderById($payload['folder_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/Headline.php b/lib/models/Courseware/BlockTypes/Headline.php index eace9465685..0c821386b82 100644 --- a/lib/models/Courseware/BlockTypes/Headline.php +++ b/lib/models/Courseware/BlockTypes/Headline.php @@ -73,13 +73,11 @@ class Headline extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['background_image_id'])) { + if ('' != $payload['background_image_id']) { $payload['background_image_id'] = $this->copyFileById($payload['background_image_id'], $rangeId); $payload['background_image'] = ''; } diff --git a/lib/models/Courseware/BlockTypes/ImageMap.php b/lib/models/Courseware/BlockTypes/ImageMap.php index 3f8f37b2b61..e275c46254e 100644 --- a/lib/models/Courseware/BlockTypes/ImageMap.php +++ b/lib/models/Courseware/BlockTypes/ImageMap.php @@ -55,13 +55,11 @@ class ImageMap extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/BlockTypes/Text.php b/lib/models/Courseware/BlockTypes/Text.php index e918c6a44e5..0a892193235 100644 --- a/lib/models/Courseware/BlockTypes/Text.php +++ b/lib/models/Courseware/BlockTypes/Text.php @@ -88,11 +88,9 @@ class Text extends BlockType return $files; } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); $document = new \DOMDocument(); if ($payload['text']) { diff --git a/lib/models/Courseware/BlockTypes/Video.php b/lib/models/Courseware/BlockTypes/Video.php index a32ca668f43..431f69b68e6 100644 --- a/lib/models/Courseware/BlockTypes/Video.php +++ b/lib/models/Courseware/BlockTypes/Video.php @@ -68,13 +68,11 @@ class Video extends BlockType } - public function copyPayload(string $rangeId = '', $payload = null): array + public function copyPayload(string $rangeId = ''): array { - if (!$payload) { - $payload = $this->getPayload(); - } + $payload = $this->getPayload(); - if (!empty($payload['file_id'])) { + if ('' != $payload['file_id']) { $payload['file_id'] = $this->copyFileById($payload['file_id'], $rangeId); } diff --git a/lib/models/Courseware/Container.php b/lib/models/Courseware/Container.php index 5ce8f29a7d9..ac5ef60bbcc 100644 --- a/lib/models/Courseware/Container.php +++ b/lib/models/Courseware/Container.php @@ -115,13 +115,13 @@ class Container extends \SimpleORMap implements \PrivacyObject ], 'blocks' => $this->getClipboardBackupBlocks() ]; - return json_encode($container, true); + return json_encode($container); } public function getClipboardBackupBlocks(): array { return $this->blocks->map(function (Block $block) { - return json_decode($block->getClipboardBackup()); + return json_decode($block->getClipboardBackup(), true); }); } @@ -195,11 +195,11 @@ class Container extends \SimpleORMap implements \PrivacyObject 'edit_blocker_id' => null, 'position' => $element->countContainers(), 'container_type' => $data->attributes->{'container-type'}, - 'payload' => json_encode($data->attributes->payload), + 'payload' => $data->attributes->payload, ]); $blockMap = self::createBlocksFromData($user, $container, $data); - $container['payload'] = $container->type->copyPayload($blockMap); + $container->payload = $container->type->copyPayload($blockMap); $container->store(); return $container; diff --git a/lib/models/Courseware/ContainerTypes/ContainerType.php b/lib/models/Courseware/ContainerTypes/ContainerType.php index 6cbcdf964a1..e358c9c95c1 100644 --- a/lib/models/Courseware/ContainerTypes/ContainerType.php +++ b/lib/models/Courseware/ContainerTypes/ContainerType.php @@ -197,7 +197,7 @@ abstract class ContainerType foreach ($payload['sections'] as &$section) { foreach ($section['blocks'] as &$block) { - $block = strval($block_map[$block]) ?? null; + $block = $block_map[$block] ?? null; } $section['blocks'] = array_filter($section['blocks']); } diff --git a/lib/models/Courseware/StructuralElement.php b/lib/models/Courseware/StructuralElement.php index d3c77fafe1e..42b876042a6 100644 --- a/lib/models/Courseware/StructuralElement.php +++ b/lib/models/Courseware/StructuralElement.php @@ -821,12 +821,6 @@ SQL; return null; } - public static function getClipboardBackup(): string - { - //TODO - return ''; - } - /** * Copies this instance into another course oder users contents. * -- GitLab