/** * Adds all ownCloud-specific properties * * @param PropFind $propFind * @param \Sabre\DAV\INode $node * @return void */ public function handleGetProperties(PropFind $propFind, \Sabre\DAV\INode $node) { if ($node instanceof \OCA\DAV\Connector\Sabre\Node) { $propFind->handle(self::FILEID_PROPERTYNAME, function () use($node) { return $node->getFileId(); }); $propFind->handle(self::INTERNAL_FILEID_PROPERTYNAME, function () use($node) { return $node->getInternalFileId(); }); $propFind->handle(self::PERMISSIONS_PROPERTYNAME, function () use($node) { $perms = $node->getDavPermissions(); if ($this->isPublic) { // remove mount information $perms = str_replace(['S', 'M'], '', $perms); } return $perms; }); $propFind->handle(self::GETETAG_PROPERTYNAME, function () use($node) { return $node->getEtag(); }); } if ($node instanceof \OCA\DAV\Connector\Sabre\File) { $propFind->handle(self::DOWNLOADURL_PROPERTYNAME, function () use($node) { /** @var $node \OCA\DAV\Connector\Sabre\File */ $directDownloadUrl = $node->getDirectDownload(); if (isset($directDownloadUrl['url'])) { return $directDownloadUrl['url']; } return false; }); } if ($node instanceof \OCA\DAV\Connector\Sabre\Directory) { $propFind->handle(self::SIZE_PROPERTYNAME, function () use($node) { return $node->getSize(); }); } $propFind->handle(self::OWNER_ID_PROPERTYNAME, function () use($node) { $owner = $node->getOwner(); return $owner->getUID(); }); $propFind->handle(self::OWNER_DISPLAY_NAME_PROPERTYNAME, function () use($node) { $owner = $node->getOwner(); $displayName = $owner->getDisplayName(); return $displayName; }); }
/** * Adds all ownCloud-specific properties * * @param PropFind $propFind * @param \Sabre\DAV\INode $node * @return void */ public function handleGetProperties(PropFind $propFind, \Sabre\DAV\INode $node) { if ($node instanceof \OC\Connector\Sabre\Node) { $propFind->handle(self::FILEID_PROPERTYNAME, function () use($node) { return $node->getFileId(); }); $propFind->handle(self::PERMISSIONS_PROPERTYNAME, function () use($node) { return $node->getDavPermissions(); }); $propFind->handle(self::GETETAG_PROPERTYNAME, function () use($node) { return $node->getEtag(); }); } if ($node instanceof \OC\Connector\Sabre\File) { $propFind->handle(self::DOWNLOADURL_PROPERTYNAME, function () use($node) { /** @var $node \OC\Connector\Sabre\File */ $directDownloadUrl = $node->getDirectDownload(); if (isset($directDownloadUrl['url'])) { return $directDownloadUrl['url']; } return false; }); } if ($node instanceof \OC\Connector\Sabre\Directory) { $propFind->handle(self::SIZE_PROPERTYNAME, function () use($node) { return $node->getSize(); }); } }
/** * Adds all ownCloud-specific properties * * @param PropFind $propFind * @param \Sabre\DAV\INode $node * @return void */ public function handleGetProperties(PropFind $propFind, \Sabre\DAV\INode $node) { if ($node instanceof \OC\Connector\Sabre\Node) { $propFind->handle(self::FILEID_PROPERTYNAME, function () use($node) { return $node->getFileId(); }); $propFind->handle(self::PERMISSIONS_PROPERTYNAME, function () use($node) { $perms = $node->getDavPermissions(); if ($this->isPublic) { // remove mount information $perms = str_replace(['S', 'M'], '', $perms); } return $perms; }); $propFind->handle(self::GETETAG_PROPERTYNAME, function () use($node) { return $node->getEtag(); }); } if ($node instanceof \OC\Connector\Sabre\File) { $propFind->handle(self::DOWNLOADURL_PROPERTYNAME, function () use($node) { /** @var $node \OC\Connector\Sabre\File */ try { $directDownloadUrl = $node->getDirectDownload(); if (isset($directDownloadUrl['url'])) { return $directDownloadUrl['url']; } } catch (StorageNotAvailableException $e) { // return empty download link when storage not available return false; } return false; }); } if ($node instanceof \OC\Connector\Sabre\Directory) { $propFind->handle(self::SIZE_PROPERTYNAME, function () use($node) { return $node->getSize(); }); } }