예제 #1
0
 /**
  * Creates a new folder.
  *
  * previously in \TYPO3\CMS\Core\Utility\File\ExtendedFileUtility::func_newfolder()
  *
  * @param string $folderName The new folder name
  * @param Folder $parentFolder (optional) the parent folder to create the new folder inside of. If not given, the root folder is used
  * @return Folder
  * @throws Exception\ExistingTargetFolderException
  * @throws Exception\InsufficientFolderAccessPermissionsException
  * @throws Exception\InsufficientFolderWritePermissionsException
  * @throws \Exception
  */
 public function createFolder($folderName, Folder $parentFolder = null)
 {
     if ($parentFolder === null) {
         $parentFolder = $this->getRootLevelFolder();
     } elseif (!$this->driver->folderExists($parentFolder->getIdentifier())) {
         throw new \InvalidArgumentException('Parent folder "' . $parentFolder->getIdentifier() . '" does not exist.', 1325689164);
     }
     if (!$this->checkFolderActionPermission('add', $parentFolder)) {
         throw new Exception\InsufficientFolderWritePermissionsException('You are not allowed to create directories in the folder "' . $parentFolder->getIdentifier() . '"', 1323059807);
     }
     if ($this->driver->folderExistsInFolder($folderName, $parentFolder->getIdentifier())) {
         throw new Exception\ExistingTargetFolderException('Folder "' . $folderName . '" already exists.', 1423347324);
     }
     $this->emitPreFolderAddSignal($parentFolder, $folderName);
     $newFolder = $this->getDriver()->createFolder($folderName, $parentFolder->getIdentifier(), true);
     $newFolder = $this->getFolder($newFolder);
     $this->emitPostFolderAddSignal($newFolder);
     return $newFolder;
 }
 /**
  * Checks if the given file exists in the given folder
  *
  * @param string $folderName
  * @param Folder $folder
  * @return bool
  */
 public function hasFolderInFolder($folderName, Folder $folder)
 {
     $this->assureFolderReadPermission($folder);
     return $this->driver->folderExistsInFolder($folderName, $folder->getIdentifier());
 }