Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2022-09-01 19:04:35 +0300
committerRobin Appelman <robin@icewind.nl>2022-09-01 19:04:35 +0300
commitfbd0090aaa490cfaeeb9e599033fe3cbc685dd2f (patch)
tree8327873a9ec2a850e0c7fab8e9abcba48e8c6116
parentb617f3983a8152f2da018ddba6936dd8381a1f20 (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.php29
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);
}