diff options
author | Robin Appelman <robin@icewind.nl> | 2022-09-01 19:04:35 +0300 |
---|---|---|
committer | Robin Appelman <robin@icewind.nl> | 2022-09-01 19:04:35 +0300 |
commit | fbd0090aaa490cfaeeb9e599033fe3cbc685dd2f (patch) | |
tree | 8327873a9ec2a850e0c7fab8e9abcba48e8c6116 | |
parent | b617f3983a8152f2da018ddba6936dd8381a1f20 (diff) |
always use the default fs owner when storing versionsversion-store-user
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r-- | apps/files_versions/lib/Storage.php | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 3f91e32ef95..edf3b4dcdd4 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -188,24 +188,27 @@ class Storage { return false; } - [$uid, $filename] = self::getUidAndFilename($filename); + // since hook paths are always relative to the "default filesystem view" + // we always use the owner from there to get the full node + $uid = Filesystem::getView()->getOwner(''); - $files_view = new View('/'.$uid .'/files'); + /** @var Folder $userFolder */ + $userFolder = \OC::$server->get(IRootFolder::class)->getUserFolder($uid); $eventDispatcher = \OC::$server->get(IEventDispatcher::class); - $fileInfo = $files_view->getFileInfo($filename); - $id = $fileInfo->getId(); - $nodes = \OC::$server->get(IRootFolder::class)->getUserFolder($uid)->getById($id); - foreach ($nodes as $node) { - $event = new CreateVersionEvent($node); - $eventDispatcher->dispatch('OCA\Files_Versions::createVersion', $event); - if ($event->shouldCreateVersion() === false) { - return false; - } + $file = $userFolder->get($filename); + if (!$file) { + return false; } // no use making versions for empty files - if ($fileInfo->getSize() === 0) { + if ($file->getSize() === 0) { + return false; + } + + $event = new CreateVersionEvent($file); + $eventDispatcher->dispatch('OCA\Files_Versions::createVersion', $event); + if ($event->shouldCreateVersion() === false) { return false; } @@ -214,7 +217,7 @@ class Storage { $userManager = \OC::$server->get(IUserManager::class); $user = $userManager->get($uid); - $versionManager->createVersion($user, $fileInfo); + $versionManager->createVersion($user, $file); } |