DataObjects/Core_company.php
[Pman.Core] / DataObjects / Core_group.php
index d920dac..16d12c0 100644 (file)
@@ -12,7 +12,7 @@
  *  NOTE - used to be called Groups ....
  * 
  */
-require_once 'DB/DataObject.php';
+class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
 
 class Pman_Core_DataObjects_Core_group extends DB_DataObject 
 {
@@ -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($person)
+    {
+        $gm = DB_Dataobject::factory('core_group_member');
+        $gm->group_id = $this->id;
+        $gm->user_id = is_object($person) ? $person->id : $person;
+        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..
@@ -133,7 +182,6 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
     function members($what = false)
     {
         $ids = $this->memberIds();
-        print_r($ids);exit;
         if (!$ids) {
             return array();
         }
@@ -141,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);
@@ -179,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;
         }
         
@@ -196,11 +246,23 @@ class Pman_Core_DataObjects_Core_group extends DB_DataObject
         $g->type = 0;
         $g->name = 'Administrators';
         if ($g->count()) {
-            return;
+            $g->find(true);;
+        } else {
+            $g->insert();
+            $gr = DB_DataObject::factory('core_group_right');
+            $gr->genDefault();
+        }
+        $m = $g->members();
+        if (empty($m)) {
+            $p = DB_DAtaObject::factory('core_person');
+            $p->orderBy('id ASC');
+            $p->limit(1);
+            if ($p->find(true)) {
+                $g->addMember($p);
+            }
+            
+            
         }
-        $g->insert();
-        $gr = DB_DataObject::factory('core_group_right');
-        $gr->genDefault();
     }
     
     function initDatabase($roo, $data)