/** * @param string $identifier * @param bool $returnInaccessibleFolderObject * * @return Folder|InaccessibleFolder * @throws \Exception * @throws Exception\InsufficientFolderAccessPermissionsException */ public function getFolder($identifier, $returnInaccessibleFolderObject = false) { $data = $this->driver->getFolderInfoByIdentifier($identifier); $folder = ResourceFactory::getInstance()->createFolderObject($this, $data['identifier'], $data['name']); try { $this->assureFolderReadPermission($folder); } catch (Exception\InsufficientFolderAccessPermissionsException $e) { $folder = null; if ($returnInaccessibleFolderObject) { // if parent folder is readable return inaccessible folder object $parentPermissions = $this->driver->getPermissions($this->driver->getParentFolderIdentifierOfIdentifier($identifier)); if ($parentPermissions['r']) { $folder = GeneralUtility::makeInstance(InaccessibleFolder::class, $this, $data['identifier'], $data['name']); } } if ($folder === null) { throw $e; } } return $folder; }