diff options
Diffstat (limited to 'lib/group/database.php')
-rw-r--r-- | lib/group/database.php | 89 |
1 files changed, 50 insertions, 39 deletions
diff --git a/lib/group/database.php b/lib/group/database.php index 5e52432c492..52608b2db73 100644 --- a/lib/group/database.php +++ b/lib/group/database.php @@ -4,7 +4,7 @@ * ownCloud * * @author Frank Karlitschek - * @copyright 2010 Frank Karlitschek karlitschek@kde.org + * @copyright 2012 Frank Karlitschek frank@owncloud.org * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE @@ -41,7 +41,6 @@ * Class for group management in a SQL Database (e.g. MySQL, SQLite) */ class OC_Group_Database extends OC_Group_Backend { - static private $userGroupCache=array(); /** * @brief Try to create a new group @@ -51,10 +50,10 @@ class OC_Group_Database extends OC_Group_Backend { * Trys to create a new group. If the group name already exists, false will * be returned. */ - public static function createGroup( $gid ){ + public function createGroup( $gid ){ // Check for existence - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); if( $result->fetchRow() ){ // Can not add an existing group @@ -62,8 +61,8 @@ class OC_Group_Database extends OC_Group_Backend { } else{ // Add group and exit - $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*groups` ( `gid` ) VALUES( ? )' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "INSERT INTO `*PREFIX*groups` ( `gid` ) VALUES( ? )" ); + $result = $stmt->execute( array( $gid )); return $result ? true : false; } @@ -76,14 +75,14 @@ class OC_Group_Database extends OC_Group_Backend { * * Deletes a group and removes it from the group_user-table */ - public static function deleteGroup( $gid ){ + public function deleteGroup( $gid ){ // Delete the group - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*groups` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*groups` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); // Delete the group-user relation - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*group_user` WHERE `gid` = ?' ); - $result = $query->execute( array( $gid )); + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `gid` = ?" ); + $result = $stmt->execute( array( $gid )); return true; } @@ -96,10 +95,10 @@ class OC_Group_Database extends OC_Group_Backend { * * Checks whether the user is member of a group or not. */ - public static function inGroup( $uid, $gid ){ + public function inGroup( $uid, $gid ){ // check - $query = OC_DB::prepare( 'SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` = ?' ); - $result = $query->execute( array( $gid, $uid )); + $stmt = OC_DB::prepare( "SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` = ?" ); + $result = $stmt->execute( array( $gid, $uid )); return $result->fetchRow() ? true : false; } @@ -112,11 +111,11 @@ class OC_Group_Database extends OC_Group_Backend { * * Adds a user to a group. */ - public static function addToGroup( $uid, $gid ){ + public function addToGroup( $uid, $gid ){ // No duplicate entries! - if( !self::inGroup( $uid, $gid )){ - $query = OC_DB::prepare( 'INSERT INTO `*PREFIX*group_user` ( `uid`, `gid` ) VALUES( ?, ? )' ); - $result = $query->execute( array( $uid, $gid )); + if( !$this->inGroup( $uid, $gid )){ + $stmt = OC_DB::prepare( "INSERT INTO `*PREFIX*group_user` ( `uid`, `gid` ) VALUES( ?, ? )" ); + $stmt->execute( array( $uid, $gid )); return true; }else{ return false; @@ -131,9 +130,9 @@ class OC_Group_Database extends OC_Group_Backend { * * removes the user from a group. */ - public static function removeFromGroup( $uid, $gid ){ - $query = OC_DB::prepare( 'DELETE FROM `*PREFIX*group_user` WHERE `uid` = ? AND `gid` = ?' ); - $result = $query->execute( array( $uid, $gid )); + public function removeFromGroup( $uid, $gid ){ + $stmt = OC_DB::prepare( "DELETE FROM `*PREFIX*group_user` WHERE `uid` = ? AND `gid` = ?" ); + $stmt->execute( array( $uid, $gid )); return true; } @@ -146,10 +145,10 @@ class OC_Group_Database extends OC_Group_Backend { * This function fetches all groups a user belongs to. It does not check * if the user exists at all. */ - public static function getUserGroups( $uid ){ + public function getUserGroups( $uid ){ // No magic! - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*group_user` WHERE `uid` = ?' ); - $result = $query->execute( array( $uid )); + $stmt = OC_DB::prepare( "SELECT `gid` FROM `*PREFIX*group_user` WHERE `uid` = ?" ); + $result = $stmt->execute( array( $uid )); $groups = array(); while( $row = $result->fetchRow()){ @@ -165,28 +164,40 @@ class OC_Group_Database extends OC_Group_Backend { * * Returns a list with all groups */ - public static function getGroups(){ - $query = OC_DB::prepare( 'SELECT `gid` FROM `*PREFIX*groups`' ); - $result = $query->execute(); - + public function getGroups($search = '', $limit = null, $offset = null) { + $stmt = OC_DB::prepare('SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` LIKE ?', $limit, $offset); + $result = $stmt->execute(array($search.'%')); $groups = array(); - while( $row = $result->fetchRow()){ - $groups[] = $row["gid"]; + while ($row = $result->fetchRow()) { + $groups[] = $row['gid']; } - return $groups; } - + + /** + * check if a group exists + * @param string $gid + * @return bool + */ + public function groupExists($gid) { + $query = OC_DB::prepare('SELECT `gid` FROM `*PREFIX*groups` WHERE `gid` = ?'); + $result = $query->execute(array($gid))->fetchOne(); + if ($result) { + return true; + } + return false; + } + /** * @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']; + public function usersInGroup($gid, $search = '', $limit = null, $offset = null) { + $stmt = OC_DB::prepare('SELECT `uid` FROM `*PREFIX*group_user` WHERE `gid` = ? AND `uid` LIKE ?', $limit, $offset); + $result = $stmt->execute(array($gid, $search.'%')); + $users = array(); + while ($row = $result->fetchRow()) { + $users[] = $row['uid']; } return $users; } |