]> source.dussan.org Git - nextcloud-server.git/commitdiff
always triger setup of builtin storage wrappers 33308/head
authorRobin Appelman <robin@icewind.nl>
Thu, 21 Jul 2022 14:36:32 +0000 (16:36 +0200)
committerRobin Appelman <robin@icewind.nl>
Thu, 21 Jul 2022 14:36:32 +0000 (16:36 +0200)
Signed-off-by: Robin Appelman <robin@icewind.nl>
lib/private/Files/SetupManager.php

index f19c9bfa062d9852cb3070d1cbbdae24b4266fd2..5782a5a72a6ce54497c72e50c9c52e74692fd817 100644 (file)
@@ -82,6 +82,7 @@ class SetupManager {
        private IConfig $config;
        private bool $listeningForProviders;
        private array $fullSetupRequired = [];
+       private bool $setupBuiltinWrappersDone = false;
 
        public function __construct(
                IEventLogger $eventLogger,
@@ -121,6 +122,15 @@ class SetupManager {
        }
 
        private function setupBuiltinWrappers() {
+               if ($this->setupBuiltinWrappersDone) {
+                       return;
+               }
+               $this->setupBuiltinWrappersDone = true;
+
+               // load all filesystem apps before, so no setup-hook gets lost
+               OC_App::loadApps(['filesystem']);
+               $prevLogging = Filesystem::logWarningWhenAddingStorageWrapper(false);
+
                Filesystem::addStorageWrapper('mount_options', function ($mountPoint, IStorage $storage, IMountPoint $mount) {
                        if ($storage->instanceOfStorage(Common::class)) {
                                $storage->setMountOptions($mount->getOptions());
@@ -188,6 +198,8 @@ class SetupManager {
                        }
                        return $storage;
                });
+
+               Filesystem::logWarningWhenAddingStorageWrapper($prevLogging);
        }
 
        /**
@@ -223,6 +235,9 @@ class SetupManager {
                        return;
                }
                $this->setupUsers[] = $user->getUID();
+
+               $this->setupBuiltinWrappers();
+
                $prevLogging = Filesystem::logWarningWhenAddingStorageWrapper(false);
 
                OC_Hook::emit('OC_Filesystem', 'preSetup', ['user' => $user->getUID()]);
@@ -321,14 +336,8 @@ class SetupManager {
 
                $this->eventLogger->start('setup_root_fs', 'Setup root filesystem');
 
-               // load all filesystem apps before, so no setup-hook gets lost
-               OC_App::loadApps(['filesystem']);
-               $prevLogging = Filesystem::logWarningWhenAddingStorageWrapper(false);
-
                $this->setupBuiltinWrappers();
 
-               Filesystem::logWarningWhenAddingStorageWrapper($prevLogging);
-
                $rootMounts = $this->mountProviderCollection->getRootMounts();
                foreach ($rootMounts as $rootMountProvider) {
                        $this->mountManager->addMount($rootMountProvider);