Implement default functions in OC_Group backend

Simplifies calling these functions, and makes code simpler

functions:
inGroup
getUserGroups
getGroups
usersInGroup
This commit is contained in:
Bart Visscher 2012-05-08 17:46:35 +02:00
parent ac2e0cd6e4
commit e77ba0280a
3 changed files with 53 additions and 26 deletions

View File

@ -84,7 +84,7 @@ class OC_Group {
OC_Hook::emit( "OC_Group", "pre_createGroup", array( "run" => &$run, "gid" => $gid ));
if($run){
//create the user in the first backend that supports creating users
//create the group in the first backend that supports creating groups
foreach(self::$_usedBackends as $backend){
if(!$backend->implementsActions(OC_GROUP_BACKEND_CREATE_GROUP))
continue;
@ -141,9 +141,6 @@ class OC_Group {
*/
public static function inGroup( $uid, $gid ){
foreach(self::$_usedBackends as $backend){
if(!$backend->implementsActions(OC_GROUP_BACKEND_IN_GROUP))
continue;
if($backend->inGroup($uid,$gid)){
return true;
}
@ -224,9 +221,6 @@ class OC_Group {
public static function getUserGroups( $uid ){
$groups=array();
foreach(self::$_usedBackends as $backend){
if(!$backend->implementsActions(OC_GROUP_BACKEND_GET_USER_GROUPS))
continue;
$groups=array_merge($backend->getUserGroups($uid),$groups);
}
return $groups;
@ -241,9 +235,6 @@ class OC_Group {
public static function getGroups(){
$groups=array();
foreach(self::$_usedBackends as $backend){
if(!$backend->implementsActions(OC_GROUP_BACKEND_GET_GROUPS))
continue;
$groups=array_merge($backend->getGroups(),$groups);
}
return $groups;
@ -270,9 +261,6 @@ class OC_Group {
public static function usersInGroup($gid){
$users=array();
foreach(self::$_usedBackends as $backend){
if(!$backend->implementsActions(OC_GROUP_BACKEND_GET_USERS))
continue;
$users=array_merge($backend->usersInGroup($gid),$users);
}
return $users;

View File

@ -31,12 +31,8 @@ define('OC_GROUP_BACKEND_NOT_IMPLEMENTED', -501);
*/
define('OC_GROUP_BACKEND_CREATE_GROUP', 0x00000001);
define('OC_GROUP_BACKEND_DELETE_GROUP', 0x00000010);
define('OC_GROUP_BACKEND_IN_GROUP', 0x00000100);
define('OC_GROUP_BACKEND_ADD_TO_GROUP', 0x00001000);
define('OC_GROUP_BACKEND_REMOVE_FROM_GOUP', 0x00010000);
define('OC_GROUP_BACKEND_GET_USER_GROUPS', 0x00100000);
define('OC_GROUP_BACKEND_GET_USERS', 0x01000000);
define('OC_GROUP_BACKEND_GET_GROUPS', 0x10000000);
define('OC_GROUP_BACKEND_ADD_TO_GROUP', 0x00000100);
define('OC_GROUP_BACKEND_REMOVE_FROM_GOUP', 0x00001000);
/**
* Abstract base class for user management
@ -45,12 +41,8 @@ abstract class OC_Group_Backend {
protected $possibleActions = array(
OC_GROUP_BACKEND_CREATE_GROUP => 'createGroup',
OC_GROUP_BACKEND_DELETE_GROUP => 'deleteGroup',
OC_GROUP_BACKEND_IN_GROUP => 'inGroup',
OC_GROUP_BACKEND_ADD_TO_GROUP => 'addToGroup',
OC_GROUP_BACKEND_REMOVE_FROM_GOUP => 'removeFromGroup',
OC_GROUP_BACKEND_GET_USER_GROUPS => 'getUserGroups',
OC_GROUP_BACKEND_GET_USERS => 'usersInGroup',
OC_GROUP_BACKEND_GET_GROUPS => 'getGroups'
);
/**
@ -83,15 +75,55 @@ abstract class OC_Group_Backend {
return (bool)($this->getSupportedActions() & $actions);
}
/**
* @brief is user in group?
* @param $uid uid of the user
* @param $gid gid of the group
* @returns true/false
*
* Checks whether the user is member of a group or not.
*/
public static function inGroup($uid, $gid){
return in_array($gid, $this->getUserGroups($uid));
}
/**
* @brief Get all groups a user belongs to
* @param $uid Name of the user
* @returns array with group names
*
* This function fetches all groups a user belongs to. It does not check
* if the user exists at all.
*/
public static function getUserGroups($uid){
return array();
}
/**
* @brief get a list of all groups
* @returns array with group names
*
* Returns a list with all groups
*/
public static function getGroups(){
return array();
}
/**
* check if a group exists
* @param string $gid
* @return bool
*/
public function groupExists($gid){
if(!$this->implementsActions(OC_GROUP_BACKEND_GET_GROUPS)){
return false;
}
return in_array($gid, $this->getGroups());
}
/**
* @brief get a list of all users in a group
* @returns array with user ids
*/
public static function usersInGroup($gid){
return array();
}
}

View File

@ -93,6 +93,13 @@ abstract class OC_Group_Example {
*/
public static function getGroups(){}
/**
* check if a group exists
* @param string $gid
* @return bool
*/
public function groupExists($gid){}
/**
* @brief get a list of all users in a group
* @returns array with user ids