/** * Copy folder * * @param \TYPO3\CMS\Core\Resource\Folder $folderToCopy The folder to copy * @param \TYPO3\CMS\Core\Resource\Folder $targetParentFolder The target folder * @param string $newFolderName * @param string $conflictMode "overrideExistingFolder", "renameNewFolder", "cancel * @return \TYPO3\CMS\Core\Resource\Folder The new (copied) folder object */ public function copyFolder(\TYPO3\CMS\Core\Resource\Folder $folderToCopy, \TYPO3\CMS\Core\Resource\Folder $targetParentFolder, $newFolderName = NULL, $conflictMode = 'renameNewFolder') { // TODO implement the $conflictMode handling // TODO permission checks $returnObject = NULL; $newFolderName = $newFolderName ? $newFolderName : $folderToCopy->getName(); $this->emitPreFolderCopySignal($folderToCopy, $targetParentFolder, $newFolderName); $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, $targetParentFolder, $newFolderName); $returnObject = $this->getFolder($targetParentFolder->getSubfolder($newFolderName)->getIdentifier()); } else { $this->copyFolderBetweenStorages($folderToCopy, $targetParentFolder, $newFolderName); } } catch (\TYPO3\CMS\Core\Exception $e) { echo $e->getMessage(); } $this->emitPostFolderCopySignal($folderToCopy, $targetParentFolder, $newFolderName); return $returnObject; }