DataObjects/Core_domain.php
[Pman.Core] / DataObjects / Groups.php
index ef4c082..2efc94a 100755 (executable)
@@ -1,6 +1,14 @@
 <?php
 /**
  * Table Definition for Groups
+ *
+ *group types
+ *
+ * 0 = permission group..
+ * 1 = team
+ * 2 = contact group
+ *
+ * 
  */
 require_once 'DB/DataObject.php';
 
@@ -28,8 +36,8 @@ class Pman_Core_DataObjects_Groups extends DB_DataObject
     function beforeDelete()
     {
         $x = DB_DataObject::factory('Groups');
-        $x->query("DELETE FROM Group_Rights WHERE group_id = {$this->id}");
-        $x->query("DELETE FROM Group_Members WHERE group_id = {$this->id}");
+        $x->query("DELETE FROM group_rights WHERE group_id = {$this->id}");
+        $x->query("DELETE FROM group_members WHERE group_id = {$this->id}");
     }
     /**
      * check who is trying to access this. false == access denied..
@@ -58,7 +66,7 @@ class Pman_Core_DataObjects_Groups extends DB_DataObject
         $pi = DB_DataObject::factory(empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable']);
         $pi->get($this->leader);
             
-        $p = DB_DataObject::factory('Group_Members');
+        $p = DB_DataObject::factory('group_members');
         $p->group_id = $this->id;
         $p->user_id = $this->leader;
         //$p->type = 1; //???????
@@ -72,7 +80,7 @@ class Pman_Core_DataObjects_Groups extends DB_DataObject
     
     function memberIds()
     {
-        $gm = DB_Dataobject::factory('Group_Members');
+        $gm = DB_Dataobject::factory('group_members');
         $gm->group_id = $this->id;
         return $gm->fetchAll('user_id');
         
@@ -81,30 +89,55 @@ class Pman_Core_DataObjects_Groups extends DB_DataObject
     
     function addMember($person)
     {
-        $gm = DB_Dataobject::factory('Group_Members');
+        $gm = DB_Dataobject::factory('group_members');
         $gm->group_id = $this->id;
         $gm->user_id = $person->id;
         if (!$gm->count()) {
             $gm->insert();
         }
     }
+    /**
+     *
+     *  grab a list of members - default is the array of person objects..
+     *  @param $what  = set to 'email' to get a list of email addresses.
+     *
+     *
+     */
     
-    function members()
+    function members($what = false)
     {
-        
-        
         $ids = $this->memberIds();
         if (!$ids) {
             return array();
         }
-        $p = DB_Dataobject::factory(empty($ff->Pman['authTable']) ? 'Person' : $ff->Pman['authTable']);
+        //$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->whereAdd('id IN ('. implode(',', $ids) .')');
         $p->active = 1;
-        return $p->fetchAll();
-     
-        
+        return $p->fetchAll($what);
+    }
+    
+    function lookup($k,$v = false) {
+        if ($v === false) {
+            $v = $k;
+            $k = 'id';
+        }
+        $this->get($k,$v);
+
+        return $this;
+    } 
+    
+    function lookUpMembers($name, $what=false)
+    {
+        if (!$this->get('name', $name)) {
+            return array();
+        }
+        return $this->members($what);
         
     }
+    
     function postListFilter($ar, $au, $req)
     {      
         
@@ -114,7 +147,43 @@ class Pman_Core_DataObjects_Groups extends DB_DataObject
             //$ret[] = array( 'id' => 999999, 'name' => 'ADMINISTRATORS');
 
     }
+    
+    function initGroups()
+    {
         
+        $g = DB_DataObject::factory('Groups');
+        $g->type = 0;
+        $g->name = 'Administrators';
+        if ($g->count()) {
+            return;
+        }
+        $g->insert();
+        $gr = DB_DataObject::factory('group_rights');
+        $gr->genDefault();
+    }
+    
+    function initDatabase($roo, $data)
+    {
+        $this->initGroups();
+        
+        foreach($data as $gi) {
+            $g = DB_DataObject::factory('Groups');
+            $g->setFrom($gi);
+            
+            if(!$g->find(true)){
+                $g->insert();
+            }
+            
+            if(count($g->members()) || empty($gi['members'])){
+                continue;
+            }
+            
+            foreach ($gi['members'] as $m){
+                $g->addMember($m);
+            }
+            
+        }
      
+    }
     
 }