]> source.dussan.org Git - nextcloud-server.git/commitdiff
fix(files_versions): Explicitly check for user or owner before call getUserFolder 41749/head
authorGit'Fellow <12234510+solracsf@users.noreply.github.com>
Sat, 25 Nov 2023 22:19:07 +0000 (23:19 +0100)
committerGit'Fellow <12234510+solracsf@users.noreply.github.com>
Mon, 27 Nov 2023 14:17:13 +0000 (15:17 +0100)
Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix typo

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Fix

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Optimize DI

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Switch to DI

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
userSession does not contain null

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
Restore phpdoc annots

Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com>
apps/files_versions/lib/Listener/FileEventsListener.php

index 323b92b3920c5f830cda2770e6db92f4571a8691..5fe41f76e492ed732b90edadad7eb2f9575487eb 100644 (file)
@@ -59,11 +59,10 @@ use OCP\Files\Folder;
 use OCP\Files\IMimeTypeLoader;
 use OCP\Files\IRootFolder;
 use OCP\Files\Node;
+use OCP\IUserSession;
 use Psr\Log\LoggerInterface;
 
 class FileEventsListener implements IEventListener {
-       private IRootFolder $rootFolder;
-       private IVersionManager $versionManager;
        /**
         * @var array<int, array>
         */
@@ -76,19 +75,14 @@ class FileEventsListener implements IEventListener {
         * @var array<string, Node>
         */
        private array $versionsDeleted = [];
-       private IMimeTypeLoader $mimeTypeLoader;
-       private LoggerInterface $logger;
 
        public function __construct(
-               IRootFolder $rootFolder,
-               IVersionManager $versionManager,
-               IMimeTypeLoader $mimeTypeLoader,
-               LoggerInterface $logger,
+               private IRootFolder $rootFolder,
+               private IVersionManager $versionManager,
+               private IMimeTypeLoader $mimeTypeLoader,
+               private IUserSession $userSession,
+               private LoggerInterface $logger,
        ) {
-               $this->rootFolder = $rootFolder;
-               $this->versionManager = $versionManager;
-               $this->mimeTypeLoader = $mimeTypeLoader;
-               $this->logger = $logger;
        }
 
        public function handle(Event $event): void {
@@ -354,18 +348,20 @@ class FileEventsListener implements IEventListener {
         * If no user is connected, try to use the node's owner.
         */
        private function getPathForNode(Node $node): ?string {
-               try {
+               $user = $this->userSession->getUser()?->getUID();
+               if ($user) {
                        return $this->rootFolder
-                               ->getUserFolder(\OC_User::getUser())
+                               ->getUserFolder($user)
                                ->getRelativePath($node->getPath());
-               } catch (\Throwable $ex) {
-                       $owner = $node->getOwner();
-                       if ($owner === null) {
-                               return null;
-                       }
+               }
+
+               $owner = $node->getOwner()?->getUid();
+               if ($owner) {
                        return $this->rootFolder
-                               ->getUserFolder($owner->getUid())
+                               ->getUserFolder($owner)
                                ->getRelativePath($node->getPath());
                }
+
+               return null;
        }
 }