summaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Config/MountProviderCollection.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Files/Config/MountProviderCollection.php')
-rw-r--r--lib/private/Files/Config/MountProviderCollection.php38
1 files changed, 25 insertions, 13 deletions
diff --git a/lib/private/Files/Config/MountProviderCollection.php b/lib/private/Files/Config/MountProviderCollection.php
index 0e08d9d0e83..ae6481e45bb 100644
--- a/lib/private/Files/Config/MountProviderCollection.php
+++ b/lib/private/Files/Config/MountProviderCollection.php
@@ -26,6 +26,7 @@ namespace OC\Files\Config;
use OC\Hooks\Emitter;
use OC\Hooks\EmitterTrait;
+use OCP\Diagnostics\IEventLogger;
use OCP\Files\Config\IHomeMountProvider;
use OCP\Files\Config\IMountProvider;
use OCP\Files\Config\IMountProviderCollection;
@@ -65,13 +66,29 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
/** @var callable[] */
private $mountFilters = [];
+ private IEventLogger $eventLogger;
+
/**
* @param \OCP\Files\Storage\IStorageFactory $loader
* @param IUserMountCache $mountCache
*/
- public function __construct(IStorageFactory $loader, IUserMountCache $mountCache) {
+ public function __construct(
+ IStorageFactory $loader,
+ IUserMountCache $mountCache,
+ IEventLogger $eventLogger
+ ) {
$this->loader = $loader;
$this->mountCache = $mountCache;
+ $this->eventLogger = $eventLogger;
+ }
+
+ private function getMountsFromProvider(IMountProvider $provider, IUser $user, IStorageFactory $loader): array {
+ $class = str_replace('\\', '_', get_class($provider));
+ $uid = $user->getUID();
+ $this->eventLogger->start('fs:setup:provider:' . $class, "Getting mounts from $class for $uid");
+ $mounts = $provider->getMountsForUser($user, $loader) ?? [];
+ $this->eventLogger->end('fs:setup:provider:' . $class);
+ return $mounts;
}
/**
@@ -82,11 +99,8 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
private function getUserMountsForProviders(IUser $user, array $providers): array {
$loader = $this->loader;
$mounts = array_map(function (IMountProvider $provider) use ($user, $loader) {
- return $provider->getMountsForUser($user, $loader);
+ return $this->getMountsFromProvider($provider, $user, $loader);
}, $providers);
- $mounts = array_filter($mounts, function ($result) {
- return is_array($result);
- });
$mounts = array_reduce($mounts, function (array $mounts, array $providerMounts) {
return array_merge($mounts, $providerMounts);
}, []);
@@ -121,24 +135,22 @@ class MountProviderCollection implements IMountProviderCollection, Emitter {
return (get_class($provider) === 'OCA\Files_Sharing\MountProvider');
});
foreach ($firstProviders as $provider) {
- $mounts = $provider->getMountsForUser($user, $this->loader);
- if (is_array($mounts)) {
- $firstMounts = array_merge($firstMounts, $mounts);
- }
+ $mounts = $this->getMountsFromProvider($provider, $user, $this->loader);
+ $firstMounts = array_merge($firstMounts, $mounts);
}
$firstMounts = $this->filterMounts($user, $firstMounts);
array_walk($firstMounts, [$mountManager, 'addMount']);
$lateMounts = [];
foreach ($lastProviders as $provider) {
- $mounts = $provider->getMountsForUser($user, $this->loader);
- if (is_array($mounts)) {
- $lateMounts = array_merge($lateMounts, $mounts);
- }
+ $mounts = $this->getMountsFromProvider($provider, $user, $this->loader);
+ $lateMounts = array_merge($lateMounts, $mounts);
}
$lateMounts = $this->filterMounts($user, $lateMounts);
+ $this->eventLogger->start("fs:setup:add-mounts", "Add mounts to the filesystem");
array_walk($lateMounts, [$mountManager, 'addMount']);
+ $this->eventLogger->end("fs:setup:add-mounts");
return array_merge($lateMounts, $firstMounts);
}