DataObjects/Core_project.php
[Pman.Core] / DataObjects / Core_group.php
index 49b9c3c..ce8db69 100644 (file)
@@ -50,6 +50,38 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
         return $this->name;
     }
     
+    function beforeInsert($q,$roo)
+    {
+        if (isset($q['_action'])) {
+            // add // sub...
+            $g = clone($this);
+            if (!$g->get($q['group_id'])) {
+                $roo->jerr("missing group id");
+
+            }
+             foreach(explode(',', $q['user_ids']) as $uid) {
+                switch($q['_action']) {
+                    case 'add':
+                        $g->addMember($uid);
+                        break;
+                    case 'sub':
+                        $g->removeMember($uid);
+                        break;
+                    default:
+                        $roo->jerr('invalid action');
+                }
+            }
+            $roo->jok('updated');
+            
+            
+            
+            
+        }
+        
+        
+    }
+    
+    
     function beforeDelete()
     {
         $x = DB_DataObject::factory('core_group_right');
@@ -111,17 +143,34 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
         return $gm->fetchAll('user_id');
         
     }
-    
+    function isMember($uid)
+    {
+        $gm = DB_Dataobject::factory('core_group_member');
+        $gm->group_id = $this->id;
+        $gm->user_id = $uid;
+        return $gm->count();
+    }
     
     function addMember($person)
     {
         $gm = DB_Dataobject::factory('core_group_member');
         $gm->group_id = $this->id;
-        $gm->user_id = $person->id;
+        $gm->user_id = is_object($person) ? $person->id : $person;
         if (!$gm->count()) {
             $gm->insert();
         }
     }
+    
+    function removeMember($person)
+    {
+        $gm = DB_Dataobject::factory('core_group_member');
+        $gm->group_id = $this->id;
+        $gm->user_id = is_object($person) ? $person->id : $person;
+        if ($gm->count()) {
+            $gm->delete();
+        }
+    }
+    
     /**
      *
      *  grab a list of members - default is the array of person objects..
@@ -140,6 +189,8 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
         // groups databse is hard coded to person.. so this should not be used for other tables.????
         $p = DB_Dataobject::factory( 'core_person' );
         
+        
+        
         $p->whereAdd('id IN ('. implode(',', $ids) .')');
         $p->active = 1;
         return $p->fetchAll($what);
@@ -178,7 +229,7 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
     
     function postListFilter($ar, $au, $req)
     {      
-        if(!empty($req['_direct_return'])){
+        if(empty($req['_add_everyone'])){
             return $ar;
         }