]> source.dussan.org Git - nextcloud-server.git/commitdiff
allow getting mounts by provider
authorRobin Appelman <robin@icewind.nl>
Tue, 8 Mar 2022 16:12:26 +0000 (17:12 +0100)
committerRobin Appelman <robin@icewind.nl>
Thu, 24 Mar 2022 16:01:38 +0000 (17:01 +0100)
Signed-off-by: Robin Appelman <robin@icewind.nl>
lib/private/Files/Config/MountProviderCollection.php
lib/public/Files/Config/IMountProviderCollection.php

index cd8a2a2e29f706f201cde346ea9cc6f3dc38f48a..efbb54edba566c4e813b668e9a39e889e529a61e 100644 (file)
@@ -75,16 +75,15 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
        }
 
        /**
-        * Get all configured mount points for the user
-        *
-        * @param \OCP\IUser $user
-        * @return \OCP\Files\Mount\IMountPoint[]
+        * @param IUser $user
+        * @param IMountProvider[] $providers
+        * @return IMountPoint[]
         */
-       public function getMountsForUser(IUser $user) {
+       private function getMountsForFromProviders(IUser $user, array $providers): array {
                $loader = $this->loader;
                $mounts = array_map(function (IMountProvider $provider) use ($user, $loader) {
                        return $provider->getMountsForUser($user, $loader);
-               }, $this->providers);
+               }, $providers);
                $mounts = array_filter($mounts, function ($result) {
                        return is_array($result);
                });
@@ -94,6 +93,17 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
                return $this->filterMounts($user, $mounts);
        }
 
+       public function getMountsForUser(IUser $user): array {
+               return $this->getMountsForFromProviders($user, $this->providers);
+       }
+
+       public function getMountsFromProvider(IUser $user, string $mountProviderClass): array {
+               $providers = array_filter($this->providers, function (IMountProvider $mountProvider) use ($mountProviderClass) {
+                       return get_class($mountProvider) === $mountProviderClass;
+               });
+               return $this->getMountsForFromProviders($user, $providers);
+       }
+
        public function addMountForUser(IUser $user, IMountManager $mountManager) {
                // shared mount provider gets to go last since it needs to know existing files
                // to check for name collisions
index f845d72cee69d4f349bb48874f1710f0132226f0..8a98c614a42c8b1e47ef9d7272cc1f6627cc588a 100644 (file)
@@ -38,6 +38,16 @@ interface IMountProviderCollection {
         */
        public function getMountsForUser(IUser $user);
 
+       /**
+        * Get the configured mount points for the user from a specific mount provider
+        *
+        * @param \OCP\IUser $user
+        * @param class-string<IMountProvider> $mountProviderClass
+        * @return \OCP\Files\Mount\IMountPoint[]
+        * @since 24.0.0
+        */
+       public function getMountsFromProvider(IUser $user, string $mountProviderClass);
+
        /**
         * Get the configured home mount for this user
         *