[Pkg-owncloud-commits] [owncloud] 25/46: backport of #9104

David Prévot taffit at moszumanska.debian.org
Fri Oct 24 15:11:43 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 174ab07a4beed45b2d3a477723f6b47a37ecc7ce
Author: macjohnny <estebanmarin at gmx.ch>
Date:   Thu Jun 19 11:37:46 2014 +0200

    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
---
 lib/private/group/manager.php | 17 ++++++++++++-----
 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 58a2392..816e7b4 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 70d9783..e4b3a52 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

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list