From 4234fdce1b9ef6282a35b43ab6c16f04b549e50d Mon Sep 17 00:00:00 2001 From: Kevin von Spiczak <kevin.spiczak@sgalinski.de> Date: Wed, 25 Oct 2023 13:18:11 +0200 Subject: [PATCH] [BUGFIX] fix exception on TYPO3 10, where Folder does not have a getFile() method yet --- Classes/Controller/JoblistController.php | 31 +++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/Classes/Controller/JoblistController.php b/Classes/Controller/JoblistController.php index 17a949e1..8c21425c 100644 --- a/Classes/Controller/JoblistController.php +++ b/Classes/Controller/JoblistController.php @@ -51,7 +51,11 @@ use TYPO3\CMS\Core\Resource\Exception\ExistingTargetFolderException; use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderAccessPermissionsException; use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderReadPermissionsException; use TYPO3\CMS\Core\Resource\Exception\InsufficientFolderWritePermissionsException; +use TYPO3\CMS\Core\Resource\File; +use TYPO3\CMS\Core\Resource\Folder; +use TYPO3\CMS\Core\Resource\ProcessedFile; use TYPO3\CMS\Core\Resource\ResourceFactory; +use TYPO3\CMS\Core\Resource\ResourceStorage; use TYPO3\CMS\Core\Site\SiteFinder; use TYPO3\CMS\Core\Utility\ExtensionManagementUtility; use TYPO3\CMS\Core\Utility\GeneralUtility; @@ -776,8 +780,9 @@ class JoblistController extends ActionController { $newFilename = strtolower($singleFilePostKey) . '.' . strtolower($filePathInfo['extension']); if (array_key_exists($singleUploadedFile, $uploadedFiles)) { // the same file was uploaded for different sources - $usableFile = $newFolder->getFile( - $uploadedFiles[$singleUploadedFile] . '.' . strtolower($filePathInfo['extension']) + $usableFile = $this->getFileInFolder( + $uploadedFiles[$singleUploadedFile] . '.' . strtolower($filePathInfo['extension']), + $newFolder ); if (!$usableFile) { throw new \RuntimeException('File not found (' . $singleFilePostKey . ')!'); @@ -790,7 +795,7 @@ class JoblistController extends ActionController { $usableFile = $storage->moveFile($singleFileToMove, $newFolder, $newFilename); } else { /** @noinspection PhpUnreachableStatementInspection */ - $usableFile = $newFolder->getFile($newFilename); + $usableFile = $this->getFileInFolder($newFilename, $newFolder); } $fileReference = $this->fileAndFolderService->createFileReferenceFromFalFileObject($usableFile); @@ -810,6 +815,26 @@ class JoblistController extends ActionController { } } + /** + * Gets a file in a folder. + * (Backwards compatible with TYPO3 10, where the Folder did not have a getFile() method yet). + * + * @param string $fileName + * @param Folder $folder + * @return null|File|ProcessedFile + */ + protected function getFileInFolder(string $fileName, Folder $folder): ?File { + if (version_compare(VersionNumberUtility::getCurrentTypo3Version(), '11.0.0', '>=')) { + return $folder->getFile($fileName); + } + + if ($folder->getStorage()->hasFileInFolder($fileName, $folder)) { + return $folder->getStorage()->getFileInFolder($fileName, $folder); + } + + return NULL; + } + /** * Returns currently set allowedFiles * -- GitLab