diff options
author | John Molakvoæ <skjnldsv@protonmail.com> | 2022-09-13 12:29:05 +0200 |
---|---|---|
committer | John Molakvoæ <skjnldsv@protonmail.com> | 2022-09-13 12:29:27 +0200 |
commit | 8f1003f132d85bfd35b65ec5f50652f70a7f99be (patch) | |
tree | 2e2585b432c7dedd6551b8a084884244b23afeac /lib/Sabre/Album/PropFindPlugin.php | |
parent | 6c24c0d4e799df5fdb3c8b8f8401147c5c2aa07e (diff) |
Catch invalid fileInfo in propFind
Signed-off-by: John Molakvoæ <skjnldsv@protonmail.com>
Diffstat (limited to 'lib/Sabre/Album/PropFindPlugin.php')
-rw-r--r-- | lib/Sabre/Album/PropFindPlugin.php | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lib/Sabre/Album/PropFindPlugin.php b/lib/Sabre/Album/PropFindPlugin.php index 82764954..303cb7ed 100644 --- a/lib/Sabre/Album/PropFindPlugin.php +++ b/lib/Sabre/Album/PropFindPlugin.php @@ -34,6 +34,7 @@ use Sabre\DAV\PropPatch; use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; use Sabre\DAV\Tree; +use OCP\Files\NotFoundException; class PropFindPlugin extends ServerPlugin { public const FILE_NAME_PROPERTYNAME = '{http://nextcloud.org/ns}file-name'; @@ -77,14 +78,22 @@ class PropFindPlugin extends ServerPlugin { public function propFind(PropFind $propFind, INode $node): void { if ($node instanceof AlbumPhoto) { + // Checking if the node is trulely available and ignoring if not + // Should be pre-emptively handled by the NodeDeletedEvent + try { + $fileInfo = $node->getFileInfo(); + } catch (NotFoundException $e) { + return; + } + $propFind->handle(FilesPlugin::INTERNAL_FILEID_PROPERTYNAME, fn () => $node->getFile()->getFileId()); $propFind->handle(FilesPlugin::GETETAG_PROPERTYNAME, fn () => $node->getETag()); $propFind->handle(self::FILE_NAME_PROPERTYNAME, fn () => $node->getFile()->getName()); - $propFind->handle(self::REALPATH_PROPERTYNAME, fn () => $node->getFileInfo()->getPath()); + $propFind->handle(self::REALPATH_PROPERTYNAME, fn () => $fileInfo->getPath()); $propFind->handle(self::FAVORITE_PROPERTYNAME, fn () => $node->isFavorite() ? 1 : 0); - $propFind->handle(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, function () use ($node) { - return json_encode($this->previewManager->isAvailable($node->getFileInfo())); + $propFind->handle(FilesPlugin::HAS_PREVIEW_PROPERTYNAME, function () use ($fileInfo) { + return json_encode($this->previewManager->isAvailable($fileInfo)); }); if ($this->metadataEnabled) { |