DataObjects/Core_project.php
[Pman.Core] / DataObjects / Core_group.php
index 4537eb3..ce8db69 100644 (file)
@@ -33,7 +33,7 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
     function personTable()
     {
         $ff = HTML_FlexyFramework::get();
-        return empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable'];
+        return empty($ff->Pman['authTable']) ? 'core_person' : $ff->Pman['authTable'];
     }
     
     
@@ -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');
@@ -81,7 +113,7 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
             return true;
         }
         
-        $pi = DB_DataObject::factory('Person');
+        $pi = DB_DataObject::factory('core_person');
         $pi->get($this->leader);
             
         $p = DB_DataObject::factory('core_group_member');
@@ -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..
@@ -138,7 +187,9 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
         }
         //$p = DB_Dataobject::factory(empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable']);
         // groups databse is hard coded to person.. so this should not be used for other tables.????
-        $p = DB_Dataobject::factory( 'Person' );
+        $p = DB_Dataobject::factory( 'core_person' );
+        
+        
         
         $p->whereAdd('id IN ('. implode(',', $ids) .')');
         $p->active = 1;
@@ -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;
         }