From 64679b2e62909df9b3e493a0dc22151b5baae1a6 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 15 Apr 2014 17:46:48 +0200 Subject: [PATCH 1/2] Remove limit and offset manipulation when getting users or groups, because it does not work when more than one user or group backend. Fixing it would be too costly performancewise, so we switch back to the model used in OC 5: limit and offset are effective per backend, and not a general constraint --- lib/private/group/group.php | 12 ------------ lib/private/group/manager.php | 6 ------ lib/private/user/manager.php | 14 -------------- 3 files changed, 32 deletions(-) diff --git a/lib/private/group/group.php b/lib/private/group/group.php index a2b8a0dcbea..3efbb6e7023 100644 --- a/lib/private/group/group.php +++ b/lib/private/group/group.php @@ -172,12 +172,6 @@ class Group { $users = array(); foreach ($this->backends as $backend) { $userIds = $backend->usersInGroup($this->gid, $search, $limit, $offset); - if (!is_null($limit)) { - $limit -= count($userIds); - } - if (!is_null($offset)) { - $offset -= count($userIds); - } $users += $this->getVerifiedUsers($userIds); if (!is_null($limit) and $limit <= 0) { return array_values($users); @@ -223,12 +217,6 @@ class Group { } else { $userIds = $backend->usersInGroup($this->gid, $search, $limit, $offset); } - if (!is_null($limit)) { - $limit -= count($userIds); - } - if (!is_null($offset)) { - $offset -= count($userIds); - } $users = $this->getVerifiedUsers($userIds); if (!is_null($limit) and $limit <= 0) { return array_values($users); diff --git a/lib/private/group/manager.php b/lib/private/group/manager.php index 9b433b64fd4..f591bd32aba 100644 --- a/lib/private/group/manager.php +++ b/lib/private/group/manager.php @@ -134,12 +134,6 @@ class Manager extends PublicEmitter { $groups = array(); foreach ($this->backends as $backend) { $groupIds = $backend->getGroups($search, $limit, $offset); - if (!is_null($limit)) { - $limit -= count($groupIds); - } - if (!is_null($offset)) { - $offset -= count($groupIds); - } foreach ($groupIds as $groupId) { $groups[$groupId] = $this->getGroupObject($groupId); } diff --git a/lib/private/user/manager.php b/lib/private/user/manager.php index a2ad9d17702..14698452e88 100644 --- a/lib/private/user/manager.php +++ b/lib/private/user/manager.php @@ -175,13 +175,6 @@ class Manager extends PublicEmitter { if (is_array($backendUsers)) { foreach ($backendUsers as $uid) { $users[] = $this->getUserObject($uid, $backend); - if (!is_null($limit)) { - $limit--; - } - if (!is_null($offset) and $offset > 0) { - $offset--; - } - } } } @@ -211,13 +204,6 @@ class Manager extends PublicEmitter { if (is_array($backendUsers)) { foreach ($backendUsers as $uid => $displayName) { $users[] = $this->getUserObject($uid, $backend); - if (!is_null($limit)) { - $limit--; - } - if (!is_null($offset) and $offset > 0) { - $offset--; - } - } } } From 450de0091abe137110d57005280ff56fa2914b92 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Tue, 15 Apr 2014 17:53:57 +0200 Subject: [PATCH 2/2] adjust tests accordingly --- tests/lib/group/group.php | 2 +- tests/lib/group/manager.php | 2 +- tests/lib/user/manager.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/lib/group/group.php b/tests/lib/group/group.php index 147532f9947..990f8ecc1d5 100644 --- a/tests/lib/group/group.php +++ b/tests/lib/group/group.php @@ -287,7 +287,7 @@ class Group extends \PHPUnit_Framework_TestCase { ->will($this->returnValue(array('user2'))); $backend2->expects($this->once()) ->method('usersInGroup') - ->with('group1', 'user', 1, 0) + ->with('group1', 'user', 2, 1) ->will($this->returnValue(array('user1'))); $users = $group->searchUsers('user', 2, 1); diff --git a/tests/lib/group/manager.php b/tests/lib/group/manager.php index 90f0e1b35e2..a03997c58eb 100644 --- a/tests/lib/group/manager.php +++ b/tests/lib/group/manager.php @@ -254,7 +254,7 @@ class Manager extends \PHPUnit_Framework_TestCase { $backend2 = $this->getMock('\OC_Group_Database'); $backend2->expects($this->once()) ->method('getGroups') - ->with('1', 1, 0) + ->with('1', 2, 1) ->will($this->returnValue(array('group12'))); $backend2->expects($this->any()) ->method('groupExists') diff --git a/tests/lib/user/manager.php b/tests/lib/user/manager.php index ad1ac9e12f2..8ca0f94c6fa 100644 --- a/tests/lib/user/manager.php +++ b/tests/lib/user/manager.php @@ -210,7 +210,7 @@ class Manager extends \PHPUnit_Framework_TestCase { $backend2 = $this->getMock('\OC_User_Dummy'); $backend2->expects($this->once()) ->method('getUsers') - ->with($this->equalTo('fo'), $this->equalTo(1), $this->equalTo(0)) + ->with($this->equalTo('fo'), $this->equalTo(3), $this->equalTo(1)) ->will($this->returnValue(array('foo3'))); $manager = new \OC\User\Manager();