diff options
author | macjohnny <estebanmarin@gmx.ch> | 2014-06-19 11:37:46 +0200 |
---|---|---|
committer | Arthur Schiwon <blizzz@owncloud.com> | 2014-10-17 21:14:01 +0200 |
commit | 174ab07a4beed45b2d3a477723f6b47a37ecc7ce (patch) | |
tree | 7c51aa09e660f5eb52acea978eca5641a0ee5bab | |
parent | 9998861402d9b16e2e7d8ebd9382633fc91a5dae (diff) | |
download | nextcloud-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
-rw-r--r-- | lib/private/group/manager.php | 17 | ||||
-rw-r--r-- | tests/lib/group/manager.php | 20 |
2 files changed, 22 insertions, 15 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; } diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php index 70d9783946a..e4b3a522767 100644 --- a/tests/lib/group/manager.php +++ b/tests/lib/group/manager.php @@ -190,7 +190,7 @@ class Manager extends \PHPUnit_Framework_TestCase { $groups = $manager->search('1'); $this->assertEquals(1, count($groups)); - $group1 = $groups[0]; + $group1 = reset($groups); $this->assertEquals('group1', $group1->getGID()); } @@ -229,8 +229,8 @@ class Manager extends \PHPUnit_Framework_TestCase { $groups = $manager->search('1'); $this->assertEquals(2, count($groups)); - $group1 = $groups[0]; - $group12 = $groups[1]; + $group1 = reset($groups); + $group12 = next($groups); $this->assertEquals('group1', $group1->getGID()); $this->assertEquals('group12', $group12->getGID()); } @@ -270,8 +270,8 @@ class Manager extends \PHPUnit_Framework_TestCase { $groups = $manager->search('1', 2, 1); $this->assertEquals(2, count($groups)); - $group1 = $groups[0]; - $group12 = $groups[1]; + $group1 = reset($groups); + $group12 = next($groups); $this->assertEquals('group1', $group1->getGID()); $this->assertEquals('group12', $group12->getGID()); } @@ -300,7 +300,7 @@ class Manager extends \PHPUnit_Framework_TestCase { $groups = $manager->getUserGroups(new User('user1', $userBackend)); $this->assertEquals(1, count($groups)); - $group1 = $groups[0]; + $group1 = reset($groups); $this->assertEquals('group1', $group1->getGID()); } @@ -340,8 +340,8 @@ class Manager extends \PHPUnit_Framework_TestCase { $groups = $manager->getUserGroups(new User('user1', $userBackend)); $this->assertEquals(2, count($groups)); - $group1 = $groups[0]; - $group2 = $groups[1]; + $group1 = reset($groups); + $group2 = next($groups); $this->assertEquals('group1', $group1->getGID()); $this->assertEquals('group2', $group2->getGID()); } @@ -727,7 +727,7 @@ class Manager extends \PHPUnit_Framework_TestCase { // check result $groups = $manager->getUserGroups($user1); $this->assertEquals(1, count($groups)); - $group1 = $groups[0]; + $group1 = reset($groups); $this->assertEquals('group1', $group1->getGID()); } @@ -768,7 +768,7 @@ class Manager extends \PHPUnit_Framework_TestCase { $user1 = new User('user1', null); $groups = $manager->getUserGroups($user1); $this->assertEquals(1, count($groups)); - $group1 = $groups[0]; + $group1 = reset($groups); $this->assertEquals('group1', $group1->getGID()); // remove user |