From 1dc4c73093a97ce3247f063aee551b5e21c87f17 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Thu, 20 Mar 2025 18:45:10 +0100 Subject: fix(files_versions): only handle path updates when there is path `getPathForNode` can fail with null for various reasons (e.g. no owner), in this cases we need to just skip the event handling. Signed-off-by: Ferdinand Thiessen --- .../files_versions/lib/Listener/FileEventsListener.php | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/apps/files_versions/lib/Listener/FileEventsListener.php b/apps/files_versions/lib/Listener/FileEventsListener.php index 49150f4e726..d796f617558 100644 --- a/apps/files_versions/lib/Listener/FileEventsListener.php +++ b/apps/files_versions/lib/Listener/FileEventsListener.php @@ -323,11 +323,19 @@ class FileEventsListener implements IEventListener { return; } - // if we rename a movable mount point, then the versions don't have - // to be renamed + // if we rename a movable mount point, then the versions don't have to be renamed $oldPath = $this->getPathForNode($source); $newPath = $this->getPathForNode($target); - $absOldPath = Filesystem::normalizePath('/' . \OC_User::getUser() . '/files' . $oldPath); + if ($oldPath === null || $newPath === null) { + return; + } + + $user = \OC_User::getUser(); + if ($user === false) { + return; + } + + $absOldPath = Filesystem::normalizePath('/' . $user . '/files' . $oldPath); $manager = Filesystem::getMountManager(); $mount = $manager->find($absOldPath); $internalPath = $mount->getInternalPath($absOldPath); @@ -335,8 +343,8 @@ class FileEventsListener implements IEventListener { return; } - $view = new View(\OC_User::getUser() . '/files'); - if ($view->file_exists($newPath)) { + $view = new View($user . '/files'); + if ($view->file_exists($newPath) === true) { Storage::store($newPath); } else { Storage::setSourcePathAndUser($oldPath); -- cgit v1.2.3