<?php namespace OCA\BigBlueButton; use OCA\BigBlueButton\AppInfo\Application; use OCP\App\IAppManager; class CircleHelper { private $api; /** @var Application */ private $app; /** @var IAppManager */ private $appManager; private $cache = []; public function __construct( Application $app, IAppManager $appManager ) { $this->app = $app; $this->appManager = $appManager; } public function isInCircle(string $userId, string $circleId): bool { return \in_array($circleId, $this->getCircleIds($userId)); } public function getCircleIds(string $userId): array { if (!\array_key_exists($userId, $this->cache)) { $this->cache[$userId] = []; $api = $this->getCircleAPI(); if ($api !== false) { // since v0.19.x \OCA\Circles\Api\v1\Circles can be used $circles = $api->listCircles(\OCA\Circles\Model\Circle::CIRCLES_ALL, '', \OCA\Circles\Model\Member::LEVEL_MEMBER); foreach ($circles as $circle) { $this->cache[$userId][] = $circle->getUniqueId(); } } } return $this->cache[$userId]; } public function getCircleAPI() { if ($this->api === null) { if ($this->appManager->isEnabledForUser('circles') && class_exists('\OCA\Circles\Api\v1\Circles')) { $container = $this->app->getContainer(); $this->api = $container->query(\OCA\Circles\Api\v1\Circles::class); } else { $this->api = false; } } return $this->api; } }