Пример #1
0
 public function moveFolder(\TYPO3\CMS\Core\Resource\Folder $folderToMove, \TYPO3\CMS\Core\Resource\Folder $targetParentFolder, $newFolderName = NULL, $conflictMode = 'renameNewFolder')
 {
     $sourceStorage = $folderToMove->getStorage();
     $returnObject = NULL;
     if (!$targetParentFolder->getStorage() == $this) {
         throw new \InvalidArgumentException('Cannot move a folder into a folder that does not belong to this storage.', 1325777289);
     }
     $newFolderName = $newFolderName ? $newFolderName : $folderToMove->getName();
     // TODO check if folder already exists in $targetParentFolder, handle this conflict then
     $this->emitPreFolderMoveSignal($folderToMove, $targetParentFolder, $newFolderName);
     // Get all file objects now so we are able to update them after moving the folder
     $fileObjects = $this->getAllFileObjectsInFolder($folderToMove);
     try {
         if ($sourceStorage == $this) {
             $fileMappings = $this->driver->moveFolderWithinStorage($folderToMove, $targetParentFolder, $newFolderName);
         } else {
             $fileMappings = $this->moveFolderBetweenStorages($folderToMove, $targetParentFolder, $newFolderName);
         }
         // Update the identifier and storage of all file objects
         foreach ($fileObjects as $oldIdentifier => $fileObject) {
             $newIdentifier = $fileMappings[$oldIdentifier];
             $fileObject->updateProperties(array('storage' => $this, 'identifier' => $newIdentifier));
         }
         $returnObject = $this->getFolder($fileMappings[$folderToMove->getIdentifier()]);
     } catch (\TYPO3\CMS\Core\Exception $e) {
         throw $e;
     }
     $this->emitPostFolderMoveSignal($folderToMove, $targetParentFolder, $newFolderName);
     return $returnObject;
 }