Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-10-18 20:22:08 +0300
committerGitHub <noreply@github.com>2022-10-18 20:22:08 +0300
commitfeaeb90f763c2e34e7f9b59ccd0192daafcef5e9 (patch)
tree778ba4410505ad4b2f2a8ffec35bd9b0a7b7ff01
parentc8cf8238b863a240c5bc8202182673b5a8fdc881 (diff)
parent2ea94a12addd6908cd84b5d342365776fbe389f7 (diff)
Merge pull request #4132 from nextcloud/backport/4065/stable24
-rw-r--r--lib/Service/CirclesService.php15
1 files changed, 14 insertions, 1 deletions
diff --git a/lib/Service/CirclesService.php b/lib/Service/CirclesService.php
index 6a471b41..919a3cbb 100644
--- a/lib/Service/CirclesService.php
+++ b/lib/Service/CirclesService.php
@@ -40,6 +40,8 @@ use Throwable;
class CirclesService {
private $circlesEnabled;
+ private $userCircleCache = [];
+
public function __construct(IAppManager $appManager) {
$this->circlesEnabled = $appManager->isEnabledForUser('circles');
}
@@ -70,6 +72,10 @@ class CirclesService {
return false;
}
+ if (isset($this->userCircleCache[$circleId][$userId])) {
+ return $this->userCircleCache[$circleId][$userId];
+ }
+
try {
/** @var CirclesManager $circlesManager */
$circlesManager = \OC::$server->get(CirclesManager::class);
@@ -77,7 +83,14 @@ class CirclesService {
$circlesManager->startSession($federatedUser);
$circle = $circlesManager->getCircle($circleId);
$member = $circle->getInitiator();
- return $member !== null && $member->getLevel() >= Member::LEVEL_MEMBER;
+ $isUserInCircle = $member !== null && $member->getLevel() >= Member::LEVEL_MEMBER;
+
+ if (!isset($this->userCircleCache[$circleId])) {
+ $this->userCircleCache[$circleId] = [];
+ }
+ $this->userCircleCache[$circleId][$userId] = $isUserInCircle;
+
+ return $isUserInCircle;
} catch (Throwable $e) {
}
return false;