mirror of
https://github.com/nextcloud/server.git
synced 2025-07-24 12:19:26 +00:00
fix: De-duplicate team resources in TeamManager
- 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>
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user