Skip to content

Commit

Permalink
backport of #9104
Browse files Browse the repository at this point in the history
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
  • Loading branch information
macjohnny authored and blizzz committed Oct 17, 2014
1 parent 9998861 commit 174ab07
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 15 deletions.
17 changes: 12 additions & 5 deletions lib/private/group/manager.php
Expand Up @@ -48,6 +48,7 @@ class Manager extends PublicEmitter implements IGroupManager {
*/
private $cachedUserGroups = array();


/**
* @param \OC\User\Manager $userManager
*/
Expand Down Expand Up @@ -180,18 +181,24 @@ public function getUserGroups($user) {
$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;
}
Expand Down
20 changes: 10 additions & 10 deletions tests/lib/group/manager.php
Expand Up @@ -190,7 +190,7 @@ public function testSearch() {

$groups = $manager->search('1');
$this->assertEquals(1, count($groups));
$group1 = $groups[0];
$group1 = reset($groups);
$this->assertEquals('group1', $group1->getGID());
}

Expand Down Expand Up @@ -229,8 +229,8 @@ public function testSearchMultipleBackends() {

$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());
}
Expand Down Expand Up @@ -270,8 +270,8 @@ public function testSearchMultipleBackendsLimitAndOffset() {

$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());
}
Expand Down Expand Up @@ -300,7 +300,7 @@ public function testGetUserGroups() {

$groups = $manager->getUserGroups(new User('user1', $userBackend));
$this->assertEquals(1, count($groups));
$group1 = $groups[0];
$group1 = reset($groups);
$this->assertEquals('group1', $group1->getGID());
}

Expand Down Expand Up @@ -340,8 +340,8 @@ public function testGetUserGroupsMultipleBackends() {

$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());
}
Expand Down Expand Up @@ -727,7 +727,7 @@ public function testGetUserGroupsWithAddUser() {
// check result
$groups = $manager->getUserGroups($user1);
$this->assertEquals(1, count($groups));
$group1 = $groups[0];
$group1 = reset($groups);
$this->assertEquals('group1', $group1->getGID());
}

Expand Down Expand Up @@ -768,7 +768,7 @@ public function testGetUserGroupsWithRemoveUser() {
$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
Expand Down

0 comments on commit 174ab07

Please sign in to comment.