diff --git a/lib/group.php b/lib/group.php index e47b770f59..72cf5dc89a 100644 --- a/lib/group.php +++ b/lib/group.php @@ -264,10 +264,10 @@ class OC_Group { * @brief get a list of all users in a group * @returns array with user ids */ - public static function usersInGroup($gid){ + public static function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { $users=array(); foreach(self::$_usedBackends as $backend){ - $users=array_merge($backend->usersInGroup($gid),$users); + $users = array_merge($backend->usersInGroup($gid, $search, $limit, $offset), $users); } return $users; } @@ -277,10 +277,11 @@ class OC_Group { * @param array $gids * @returns array with user ids */ - public static function usersInGroups($gids){ + public static function usersInGroups($gids, $search = '', $limit = -1, $offset = 0) { $users = array(); - foreach($gids as $gid){ - $users = array_merge(array_diff(self::usersInGroup($gid), $users), $users); + foreach ($gids as $gid) { + // TODO Need to apply limits to groups as total + $users = array_merge(array_diff(self::usersInGroup($gid, $search, $limit, $offset), $users), $users); } return $users; } diff --git a/lib/group/backend.php b/lib/group/backend.php index 7a7cebc726..4c7d09bcb1 100644 --- a/lib/group/backend.php +++ b/lib/group/backend.php @@ -122,7 +122,7 @@ abstract class OC_Group_Backend implements OC_Group_Interface { * @brief get a list of all users in a group * @returns array with user ids */ - public function usersInGroup($gid){ + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { return array(); } diff --git a/lib/group/database.php b/lib/group/database.php index 669edc662c..1cb4171f49 100644 --- a/lib/group/database.php +++ b/lib/group/database.php @@ -182,12 +182,16 @@ class OC_Group_Database extends OC_Group_Backend { * @brief get a list of all users in a group * @returns array with user ids */ - public function usersInGroup($gid){ - $query=OC_DB::prepare('SELECT uid FROM *PREFIX*group_user WHERE gid=?'); - $users=array(); - $result=$query->execute(array($gid)); - while($row=$result->fetchRow()){ - $users[]=$row['uid']; + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { + if ($limit == -1) { + $query = OC_DB::prepare('SELECT uid FROM *PREFIX*group_user WHERE gid = ? AND uid LIKE ?'); + } else { + $query = OC_DB::prepare('SELECT uid FROM *PREFIX*group_user WHERE gid = ? AND uid LIKE ? LIMIT '.$limit.' OFFSET '.$offset); + } + $result = $query->execute(array($gid, $search.'%')); + $users = array(); + while ($row = $result->fetchRow()) { + $users[] = $row['uid']; } return $users; } diff --git a/lib/group/dummy.php b/lib/group/dummy.php index 092aa9beda..51eca28f3f 100644 --- a/lib/group/dummy.php +++ b/lib/group/dummy.php @@ -149,7 +149,7 @@ class OC_Group_Dummy extends OC_Group_Backend { * @brief get a list of all users in a group * @returns array with user ids */ - public function usersInGroup($gid){ + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { if(isset($this->groups[$gid])){ return $this->groups[$gid]; }else{ diff --git a/lib/group/example.php b/lib/group/example.php index c33b435ca0..76d1262976 100644 --- a/lib/group/example.php +++ b/lib/group/example.php @@ -104,6 +104,6 @@ abstract class OC_Group_Example { * @brief get a list of all users in a group * @returns array with user ids */ - abstract public static function usersInGroup($gid); + abstract public static function usersInGroup($gid, $search = '', $limit = -1, $offset = 0); } diff --git a/lib/group/interface.php b/lib/group/interface.php index f496d502df..12cc07a537 100644 --- a/lib/group/interface.php +++ b/lib/group/interface.php @@ -71,6 +71,6 @@ interface OC_Group_Interface { * @brief get a list of all users in a group * @returns array with user ids */ - public function usersInGroup($gid); + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0); } \ No newline at end of file