DataObjects/Core_enum.php
[Pman.Core] / DataObjects / Core_person.php
index d4b42cf..97a799d 100644 (file)
@@ -50,7 +50,7 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
     
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
-    
     function owner()
     {
         $p = DB_DataObject::Factory($this->tableName());
@@ -1043,6 +1043,19 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
             ");
         }
         
+        $cgm = DB_DataObject::Factory('core_group_member')->tableName();
+        
+        $this->selectAdd("
+           (
+            SELECT GROUP_CONCAT({$cgm}.group_id) 
+                FROM 
+                    {$cgm}
+                WHERE 
+                    {$cgm}.user_id = {$this->tableName()}.id
+                ) AS membership_list    
+            
+        ");    
+        
         
     }
     
@@ -1098,8 +1111,40 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
         // if they are a member of admin group do not delete anything.
         $default_admin = false;
         
+        $e = DB_DataObject::Factory('Events');
+        $e->whereAdd('person_id = ' . $this->id);
+        
+        $g = DB_DataObject::Factory('core_group');
+        $g->get('name', 'Administrators');  // select * from core_group where name = 'Administrators'
         
+        $p = DB_DataObject::Factory('core_group_member');
+        $p->setFrom(array(
+            'user_id' => $this->id,
+            'group_id' => $g->id
+        ));
+
+        if ($p->count()) {
+           $roo->jerr("Please remove this user from the Administrator group before deleting");
+        }
+         
+        $p = DB_DataObject::Factory('core_group_member');
+        $p->user_id = $this->id;
+        $mem = $p->fetchAll();  // fetch all the rows and set the $mem variable to the rows data, just like mysqli_fetch_assoc
+        $e->logDeletedRecord($mem);
+                
+        foreach($mem as $p) { 
+            $p->delete();
+        }  
         
+        $e = DB_DataObject::Factory('Events');        
+        $e->person_id = $this->id;
+        $eve = $e->fetchAll();  // fetch all the rows and set the $mem variable to the rows data, just like mysqli_fetch_assoc
+
+        $e->logDeletedRecord($eve);
+        foreach($eve as $e) { 
+            $e->delete();
+        }  
         
         
         // anything else?  
@@ -1337,6 +1382,8 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
     
     function beforeUpdate($old, $q, $roo)
     {
+       
+        
         if(!empty($q['_generate_oath_key'])){
             $o = clone($this);
             $this->generateOathKey();
@@ -1353,12 +1400,68 @@ class Pman_Core_DataObjects_Core_person extends DB_DataObject
             
             $roo->jok($qrcode);
         }
-        // handle group_id here..
-        if(!empty($q['group_id'])){
+        
+        if(!empty($q['membership_list'])){
             
-            // insert data into core_person_member...
+             
+            if ($roo->authUser->id == $old->id) {
+                // you are editing yourself...
+                
+                // if was admin before....
+                   // -if new membership does not icnlude  admin id
+                      // -- then show error
+                
+                
+            }
+            
+            
+            
+            
+         
+            $x = PDO_DataObject::factory('core_group_member');
+            $x->select('group_id');
+            $x->user_id = $q['id'];
+            
+            $ar = $x->fetchAll('group_id');
+            
+            $group_id_arr = explode(",", $q['membership_list']);
+            
+            $result_del = array_diff($ar, $group_id_arr);
             
+            // check if id needs to be deleted
+            if(!empty($result_del)){
+                /*
+                $x = PDO_DataObject::factory('core_group_member');
+                $x->user_id = $q['id'];
+                $x->whereAddIn('group_id', $result_del, 'int');
+                foreach($x->fetchAll() as $cgm) {
+                    $cgm->delete();
+                }
+                
+                
+                */
+                foreach($result_del as $group_id){
+                    $x = PDO_DataObject::factory('core_group_member');
+                    $x->user_id = $q['id'];
+                    $x->group_id = $group_id;
+                    $x->find(true);
+                    $x->delete();
+                }
+            }
             
+            $result_add = array_diff($group_id_arr, $ar);
+            
+            
+            // insert data into core_person_member...
+            //PDO_DataObject::Factory('coremytable_group_member')->set([ 'group_id' => 'test', 'user_id' => "{$this->tableName()}.id"])->insert();
+            if(!empty($result_add)){
+                foreach($result_add as $gid){
+                    PDO_DataObject::Factory('core_group_member')->set(array(
+                        'group_id'=> $gid,
+                        'user_id' => $q['id']
+                    ))->insert();
+                }
+            }
         }
     }