summaryrefslogtreecommitdiffstats
path: root/lib/group/database.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/group/database.php')
-rw-r--r--lib/group/database.php89
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;
}