Пример #1
0
 /**
  * Copies a folder.
  *
  * @param FolderInterface $folderToCopy The folder to copy
  * @param FolderInterface $targetParentFolder The target folder
  * @param string $newFolderName
  * @param string $conflictMode  "overrideExistingFolder", "renameNewFolder", "cancel
  * @return Folder The new (copied) folder object
  */
 public function copyFolder(FolderInterface $folderToCopy, FolderInterface $targetParentFolder, $newFolderName = NULL, $conflictMode = 'renameNewFolder')
 {
     // TODO implement the $conflictMode handling
     $this->assureFolderCopyPermissions($folderToCopy, $targetParentFolder);
     $returnObject = NULL;
     $sanitizedNewFolderName = $this->driver->sanitizeFileName($newFolderName ?: $folderToCopy->getName());
     if ($folderToCopy instanceof Folder && $targetParentFolder instanceof Folder) {
         $this->emitPreFolderCopySignal($folderToCopy, $targetParentFolder, $sanitizedNewFolderName);
     }
     $sourceStorage = $folderToCopy->getStorage();
     // call driver method to move the file
     // that also updates the file object properties
     try {
         if ($sourceStorage === $this) {
             $this->driver->copyFolderWithinStorage($folderToCopy->getIdentifier(), $targetParentFolder->getIdentifier(), $sanitizedNewFolderName);
             $returnObject = $this->getFolder($targetParentFolder->getSubfolder($sanitizedNewFolderName)->getIdentifier());
         } else {
             $this->copyFolderBetweenStorages($folderToCopy, $targetParentFolder, $sanitizedNewFolderName);
         }
     } catch (\TYPO3\CMS\Core\Exception $e) {
         echo $e->getMessage();
     }
     $this->emitPostFolderCopySignal($folderToCopy, $targetParentFolder, $returnObject->getName());
     return $returnObject;
 }
Пример #2
0
 /**
  * Copies a folder.
  *
  * @param FolderInterface $folderToCopy The folder to copy
  * @param FolderInterface $targetParentFolder The target folder
  * @param string $newFolderName
  * @param string $conflictMode a value of the DuplicationBehavior enumeration
  * @return Folder The new (copied) folder object
  * @throws InvalidTargetFolderException
  */
 public function copyFolder(FolderInterface $folderToCopy, FolderInterface $targetParentFolder, $newFolderName = null, $conflictMode = DuplicationBehavior::RENAME)
 {
     // @todo implement the $conflictMode handling
     $this->assureFolderCopyPermissions($folderToCopy, $targetParentFolder);
     $returnObject = null;
     $sanitizedNewFolderName = $this->driver->sanitizeFileName($newFolderName ?: $folderToCopy->getName());
     if ($folderToCopy instanceof Folder && $targetParentFolder instanceof Folder) {
         $this->emitPreFolderCopySignal($folderToCopy, $targetParentFolder, $sanitizedNewFolderName);
     }
     $sourceStorage = $folderToCopy->getStorage();
     // call driver method to move the file
     // that also updates the file object properties
     if ($sourceStorage === $this) {
         if ($this->isWithinFolder($folderToCopy, $targetParentFolder)) {
             throw new InvalidTargetFolderException(sprintf('Cannot copy folder "%s" into target folder "%s", because the target folder is already within the folder to be copied!', $folderToCopy->getName(), $targetParentFolder->getName()), 1422723059);
         }
         $this->driver->copyFolderWithinStorage($folderToCopy->getIdentifier(), $targetParentFolder->getIdentifier(), $sanitizedNewFolderName);
         $returnObject = $this->getFolder($targetParentFolder->getSubfolder($sanitizedNewFolderName)->getIdentifier());
     } else {
         $this->copyFolderBetweenStorages($folderToCopy, $targetParentFolder, $sanitizedNewFolderName);
     }
     $this->emitPostFolderCopySignal($folderToCopy, $targetParentFolder, $returnObject->getName());
     return $returnObject;
 }