From 92bc9a29205f8c7a34c97fbf411d9d65840a8355 Mon Sep 17 00:00:00 2001 From: Git'Fellow <12234510+solracsf@users.noreply.github.com> Date: Thu, 14 Dec 2023 22:46:37 +0100 Subject: [PATCH] Check for user and owner before call getUserFolder Signed-off-by: Git'Fellow <12234510+solracsf@users.noreply.github.com> --- .../lib/Listener/FileEventsListener.php | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/apps/files_versions/lib/Listener/FileEventsListener.php b/apps/files_versions/lib/Listener/FileEventsListener.php index fe638364b9d0d..c8d018ab2001f 100644 --- a/apps/files_versions/lib/Listener/FileEventsListener.php +++ b/apps/files_versions/lib/Listener/FileEventsListener.php @@ -58,11 +58,10 @@ 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 VersionsMapper $versionsMapper; /** * @var array */ @@ -75,19 +74,14 @@ class FileEventsListener implements IEventListener { * @var array */ private array $versionsDeleted = []; - private IMimeTypeLoader $mimeTypeLoader; - private LoggerInterface $logger; public function __construct( - IRootFolder $rootFolder, - VersionsMapper $versionsMapper, - IMimeTypeLoader $mimeTypeLoader, - LoggerInterface $logger, + private IRootFolder $rootFolder, + private IVersionManager $versionManager, + private IMimeTypeLoader $mimeTypeLoader, + private IUserSession $userSession, + private LoggerInterface $logger, ) { - $this->rootFolder = $rootFolder; - $this->versionsMapper = $versionsMapper; - $this->mimeTypeLoader = $mimeTypeLoader; - $this->logger = $logger; } public function handle(Event $event): void { @@ -349,17 +343,23 @@ public function pre_renameOrCopy_hook(Node $source, Node $target): void { /** * Retrieve the path relative to the current user root folder. - * If no user is connected, use the node's owner. + * 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()?->getUid(); + if ($owner) { return $this->rootFolder - ->getUserFolder($node->getOwner()->getUid()) + ->getUserFolder($owner) ->getRelativePath($node->getPath()); } + + return null; } }