diff options
author | nfebe <fenn25.fn@gmail.com> | 2025-07-17 22:44:58 +0100 |
---|---|---|
committer | nfebe <fenn25.fn@gmail.com> | 2025-07-17 23:02:05 +0100 |
commit | 860eb6e56577918ca543d7e8db3c4a49f7c81a7c (patch) | |
tree | e68b60655545aab5d86cd38b61d03bc19d52c20a | |
parent | 2cbfdcc4932857cc9f335aab86b37cc31cfa863a (diff) | |
download | nextcloud-server-fix/team-resource-deduplication.tar.gz nextcloud-server-fix/team-resource-deduplication.zip |
fix: De-duplicate team resources in TeamManagerfix/team-resource-deduplication
- Use resource ID as array key to prevent duplicate resources.
- Add logging for provider loading and exceptions.
Signed-off-by: nfebe <fenn25.fn@gmail.com>
-rw-r--r-- | lib/private/Teams/TeamManager.php | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/private/Teams/TeamManager.php b/lib/private/Teams/TeamManager.php index 13d6cc459a9..6016b0bd710 100644 --- a/lib/private/Teams/TeamManager.php +++ b/lib/private/Teams/TeamManager.php @@ -7,6 +7,7 @@ namespace OC\Teams; + use OC\AppFramework\Bootstrap\Coordinator; use OCA\Circles\CirclesManager; use OCA\Circles\Exceptions\CircleNotFoundException; @@ -19,6 +20,8 @@ use OCP\Teams\ITeamResourceProvider; use OCP\Teams\Team; use Psr\Container\ContainerExceptionInterface; use Psr\Container\NotFoundExceptionInterface; +use Psr\Log\LoggerInterface; + class TeamManager implements ITeamManager { @@ -29,6 +32,7 @@ class TeamManager implements ITeamManager { private Coordinator $bootContext, private IURLGenerator $urlGenerator, private ?CirclesManager $circlesManager, + private LoggerInterface $logger, ) { } @@ -50,8 +54,10 @@ class TeamManager implements ITeamManager { try { /** @var ITeamResourceProvider $provider */ $provider = Server::get($providerRegistration->getService()); + $this->logger->info('Got team resource provider (id.name): ' . $provider->getId() . '.' .$provider->getName()); $this->providers[$provider->getId()] = $provider; } catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) { + $this->logger->warning('Could not get team resource provider: ' . $e->getMessage()); } } return $this->providers; @@ -78,7 +84,9 @@ class TeamManager implements ITeamManager { $resources = []; foreach ($this->getProviders() as $provider) { - array_push($resources, ...$provider->getSharedWith($teamId)); + foreach ($provider->getSharedWith($teamId) as $resource) { + $resources[$resource->getId()] = $resource; + } } return array_values($resources); |