From 4930e0cbb54b090d060d30ea6d56ca2f4ba35cbf Mon Sep 17 00:00:00 2001 From: Marc Neuhaus Date: Thu, 5 Apr 2018 14:17:19 +0200 Subject: [PATCH] preserve existing fal uids on rename --- Classes/Mapping/FalMapping.php | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/Classes/Mapping/FalMapping.php b/Classes/Mapping/FalMapping.php index 887911a..5a51296 100644 --- a/Classes/Mapping/FalMapping.php +++ b/Classes/Mapping/FalMapping.php @@ -11,6 +11,7 @@ use TYPO3\CMS\Core\Database\ConnectionPool; use TYPO3\CMS\Core\Resource\Driver\AbstractHierarchicalFilesystemDriver; use TYPO3\CMS\Core\Resource\Driver\LocalDriver; +use TYPO3\CMS\Core\Resource\DuplicationBehavior; use TYPO3\CMS\Core\Resource\Exception\ExistingTargetFileNameException; use TYPO3\CMS\Core\Resource\Exception\FolderDoesNotExistException; use TYPO3\CMS\Core\Resource\Exception\InvalidFileNameException; @@ -177,16 +178,16 @@ protected function downloadFileAndGetFileObject($objectId, array $data, Event $e $contents = file_get_contents($tempPathAndFilename); unlink($tempPathAndFilename); $targetFilename = $this->sanitizeFileName(pathinfo($tempPathAndFilename, PATHINFO_BASENAME)); - $file = $folder->createFile($targetFilename); - foreach($existingFileRows as $existingFileRow) { - if($existingFileRow['name'] !== $targetFilename) { - $existingFile = $storage->getFile($existingFileRow['identifier']); - try { - $storage->deleteFile($existingFile); - } catch(\Exception $e) { - + if (count($existingFileRows) > 0) { + foreach($existingFileRows as $existingFileRow) { + $file = $storage->getFile($existingFileRow['identifier']); + if($existingFileRow['name'] !== $targetFilename) { + $file->rename($targetFilename, DuplicationBehavior::REPLACE); + break; } } + } else { + $file = $folder->createFile($targetFilename); } } catch (ExistingTargetFileNameException $error) { $file = reset($this->getObjectRepository()->searchByName($folder, $targetFilename));