]> source.dussan.org Git - nextcloud-server.git/commitdiff
Implement default functions in OC_Group backend
authorBart Visscher <bartv@thisnet.nl>
Tue, 8 May 2012 15:46:35 +0000 (17:46 +0200)
committerBart Visscher <bartv@thisnet.nl>
Thu, 10 May 2012 07:14:26 +0000 (09:14 +0200)
Simplifies calling these functions, and makes code simpler

functions:
inGroup
getUserGroups
getGroups
usersInGroup

lib/group.php
lib/group/backend.php
lib/group/example.php

index 9b2959d1f73c77cfa3dba3e8a0b4f88679d220ae..bc98e877ade28a90fc96e074ffe4ccf29f342329 100644 (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;
index af6c53c803577cdcb5145d2d6c2922ddbb8efdea..7984a6a8355378a155ff176a6bf64e83202b43be 100644 (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();
+       }
+
 }
index a88159f91bea7fdd3e20c4054a48c9fbead9c02b..11a14b5e785c809029a8947ca51ade67398d2611 100644 (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