summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authormacjohnny <estebanmarin@gmx.ch>2014-06-19 11:37:46 +0200
committerArthur Schiwon <blizzz@owncloud.com>2014-10-17 21:14:01 +0200
commit174ab07a4beed45b2d3a477723f6b47a37ecc7ce (patch)
tree7c51aa09e660f5eb52acea978eca5641a0ee5bab /lib
parent9998861402d9b16e2e7d8ebd9382633fc91a5dae (diff)
downloadnextcloud-server-174ab07a4beed45b2d3a477723f6b47a37ecc7ce.tar.gz
nextcloud-server-174ab07a4beed45b2d3a477723f6b47a37ecc7ce.zip
backport of #9104
Update manager.php add caching to getUserGroupIds Update manager.php added description and blank lines in getUserGroupIds Update manager.php defined $uid in getUserGroupIds Update manager.php Update manager.php Update manager.php clean up function getUserGroupIds clean up of function getUserGroupIds and improved caching mechanism of cachedUserGroupIds modified caching mechanism in getUserGroupIds removed cachedUserGroupIds, instead changed indexing in getUserGroups to groupId adapted tests for a groupId indexed group array
Diffstat (limited to 'lib')
-rw-r--r--lib/private/group/manager.php17
1 files changed, 12 insertions, 5 deletions
diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php
index 58a23924872..816e7b427f5 100644
--- a/lib/private/group/manager.php
+++ b/lib/private/group/manager.php
@@ -48,6 +48,7 @@ class Manager extends PublicEmitter implements IGroupManager {
*/
private $cachedUserGroups = array();
+
/**
* @param \OC\User\Manager $userManager
*/
@@ -180,18 +181,24 @@ class Manager extends PublicEmitter implements IGroupManager {
$groups[$groupId] = $this->get($groupId);
}
}
- $this->cachedUserGroups[$uid] = array_values($groups);
+ $this->cachedUserGroups[$uid] = $groups;
return $this->cachedUserGroups[$uid];
}
+
/**
+ * get a list of group ids for a user
* @param \OC\User\User $user
- * @return array with group names
+ * @return array with group ids
*/
public function getUserGroupIds($user) {
$groupIds = array();
- foreach ($this->backends as $backend) {
- $groupIds = array_merge($groupIds, $backend->getUserGroups($user->getUID()));
-
+ $userId = $user->getUID();
+ if (isset($this->cachedUserGroups[$userId])) {
+ return array_keys($this->cachedUserGroups[$userId]);
+ } else {
+ foreach ($this->backends as $backend) {
+ $groupIds = array_merge($groupIds, $backend->getUserGroups($userId));
+ }
}
return $groupIds;
}