aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornfebe <fenn25.fn@gmail.com>2025-07-17 22:44:58 +0100
committernfebe <fenn25.fn@gmail.com>2025-07-17 23:02:05 +0100
commit860eb6e56577918ca543d7e8db3c4a49f7c81a7c (patch)
treee68b60655545aab5d86cd38b61d03bc19d52c20a
parent2cbfdcc4932857cc9f335aab86b37cc31cfa863a (diff)
downloadnextcloud-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.php10
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);