From bfd72501a19c4352b2a9f220c3f2dfac69346b61 Mon Sep 17 00:00:00 2001
From: Robin Appelman <icewind1991@gmail.com>
Date: Thu, 11 Aug 2011 10:11:44 +0200
Subject: [PATCH] add OC_Group::usersInGroup() to get a list of all users in a
 group

---
 lib/group.php          |  8 ++++++++
 lib/group/backend.php  |  6 ++++++
 lib/group/database.php | 22 ++++++++++++++++++----
 3 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/lib/group.php b/lib/group.php
index 54dc0b6463c..65a23989a27 100644
--- a/lib/group.php
+++ b/lib/group.php
@@ -243,4 +243,12 @@ class OC_Group {
 	public static function groupExists($gid){
 		return in_array( $gid, self::getGroups());
 	}
+	
+	/**
+	 * @brief get a list of all users in a group
+	 * @returns array with user ids
+	 */
+	public static function usersInGroup($gid){
+		return self::$_backend->usersInGroup();
+	}
 }
diff --git a/lib/group/backend.php b/lib/group/backend.php
index ebee8aacb91..43f94e7ea1a 100644
--- a/lib/group/backend.php
+++ b/lib/group/backend.php
@@ -93,4 +93,10 @@ abstract class OC_Group_Backend {
 	 * Returns a list with all groups
 	 */
 	public static function getGroups(){}
+	
+	/**
+	 * @brief get a list of all users in a group
+	 * @returns array with user ids
+	 */
+	public static function usersInGroup($gid){}
 }
diff --git a/lib/group/database.php b/lib/group/database.php
index 6ca80b93985..8a9fc53d39f 100644
--- a/lib/group/database.php
+++ b/lib/group/database.php
@@ -53,7 +53,7 @@ class OC_Group_Database extends OC_Group_Backend {
 	 */
 	public static function createGroup( $gid ){
 		// Check for existence
-		$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*groups` WHERE gid = ?" );
+		$query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*groups` WHERE gid = ?" );
 		$result = $query->execute( array( $gid ));
 
 		if( $result->numRows() > 0 ){
@@ -98,7 +98,7 @@ class OC_Group_Database extends OC_Group_Backend {
 	 */
 	public static function inGroup( $uid, $gid ){
 		// check
-		$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*group_user` WHERE gid = ? AND uid = ?" );
+		$query = OC_DB::prepare( "SELECT uid FROM `*PREFIX*group_user` WHERE gid = ? AND uid = ?" );
 		$result = $query->execute( array( $gid, $uid ));
 
 		return $result->numRows() > 0 ? true : false;
@@ -146,7 +146,7 @@ class OC_Group_Database extends OC_Group_Backend {
 	 */
 	public static function getUserGroups( $uid ){
 		// No magic!
-		$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*group_user` WHERE uid = ?" );
+		$query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*group_user` WHERE uid = ?" );
 		$result = $query->execute( array( $uid ));
 
 		$groups = array();
@@ -164,7 +164,7 @@ class OC_Group_Database extends OC_Group_Backend {
 	 * Returns a list with all groups
 	 */
 	public static function getGroups(){
-		$query = OC_DB::prepare( "SELECT * FROM `*PREFIX*groups`" );
+		$query = OC_DB::prepare( "SELECT gid FROM `*PREFIX*groups`" );
 		$result = $query->execute();
 
 		$groups = array();
@@ -174,4 +174,18 @@ class OC_Group_Database extends OC_Group_Backend {
 
 		return $groups;
 	}
+	
+	/**
+	 * @brief get a list of all users in a group
+	 * @returns array with user ids
+	 */
+	public static 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'];
+		}
+		return $users;
+	}
 }
-- 
GitLab