diff --git a/.github/workflows/integration-pgsql.yml b/.github/workflows/integration-pgsql.yml index 1d757796621..fb712d9bbd1 100644 --- a/.github/workflows/integration-pgsql.yml +++ b/.github/workflows/integration-pgsql.yml @@ -69,7 +69,7 @@ jobs: - 'sharing-3' - 'sharing-4' php-versions: ['8.3'] - server-versions: ['master'] + server-versions: ['share-verify-mount-event-improvements'] guests-versions: ['main'] circles-versions: ['master'] notifications-versions: ['master'] diff --git a/lib/Share/Listener.php b/lib/Share/Listener.php index 2f1d5bdf119..b20af6c4c0f 100644 --- a/lib/Share/Listener.php +++ b/lib/Share/Listener.php @@ -52,7 +52,6 @@ protected function overwriteShareTarget(BeforeShareCreatedEvent $event): void { protected function overwriteMountPoint(VerifyMountPointEvent $event): void { $share = $event->getShare(); - $view = $event->getView(); if ($share->getShareType() !== IShare::TYPE_ROOM && $share->getShareType() !== RoomShareProvider::SHARE_TYPE_USERROOM) { @@ -60,27 +59,9 @@ protected function overwriteMountPoint(VerifyMountPointEvent $event): void { } if ($event->getParent() === RoomShareProvider::TALK_FOLDER_PLACEHOLDER) { - try { - $userId = $view->getOwner('/'); - } catch (\Exception $e) { - // If we fail to get the owner of the view from the cache, - // e.g. because the user never logged in but a cron job runs - // We fall back to calculating the owner from the root of the view: - if (substr_count($view->getRoot(), '/') >= 2) { - // /37c09aa0-1b92-4cf6-8c66-86d8cac8c1d0/files - [, $userId, ] = explode('/', $view->getRoot(), 3); - } else { - // Something weird is going on, we can't fall back more - // so for now we don't overwrite the share path ¯\_(ツ)_/¯ - return; - } - } - - $parent = $this->config->getAttachmentFolder($userId); + $parent = $this->config->getAttachmentFolder($event->getUser()->getUID()); + $event->setCreateParent(true); $event->setParent($parent); - if (!$event->getView()->is_dir($parent)) { - $event->getView()->mkdir($parent); - } } }