DataObjects/Events.php
[Pman.Core] / DataObjects / Events.php
index 9c8f216..372533c 100644 (file)
@@ -25,6 +25,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
     public $person_id;                       // int(11)  
     public $remarks;                         // blob(65535)  blob
     public $person_table;                    // string(64)
+    public $dupe_id;                    // int(11)
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
@@ -41,16 +42,14 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         if(!empty($q['person_table'])){
             $jt = DB_DataObject::factory($q['person_table']);
 
-            $et = DB_DataObject::factory($tn);
-            //$this->selectAdd("(select count(*) from Events where Events.dup_id = evet.id) as cnt ");
-            //$this->selectAs($et,'%s','evet');
+            
             
             if(!array_key_exists("{$jt->tableName()}_id", $this->tableColumns())){ // coz we have triiger on mysql...
                 
                 $keys = $jt->keys();
             
                 $this->_join = "LEFT JOIN {$jt->tableName()} AS join_person_id_id ON (join_person_id_id.{$keys[0]}=Events.person_id)";
-                //$this->_join = "LEFT JOIN {$jt->tableName()} AS join_person_id_id ON (join_person_id_id.{$keys[0]}=Events.person_id)";
+                
                 $this->selectAdd();
                 $this->selectAs();
 
@@ -75,12 +74,12 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             }
             
             $jt = DB_DataObject::factory($person);
-            $this->whereAdd("
-                    person_table  = '{$jt->tableName()}'
-                    OR
-                    person_table = ''
-                    OR person_table IS NULL"
-            ); // default to  our standard.. - unless otherwise requested..
+            //$this->whereAdd("
+            //        person_table  = '{$jt->tableName()}'
+            //        OR
+            //        person_table = ''
+            //        OR person_table IS NULL"
+            //); // default to  our standard.. - unless otherwise requested..
         }
         
         
@@ -92,6 +91,11 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             $dt = date('Y-m-d' , strtotime($q['query']['to']));
             $this->whereAdd(" {$tn}.event_when <=  '$dt' ");
         }
+        
+        if(!empty($q['_with_dupe_count'])){
+            $this->dupe_id = 0;                                   
+            $this->selectAdd("(select count(*)+1 from Events ev_cnt where ev_cnt.dupe_id = {$tn}.id) as dupe_count");
+        }
         /*
         if (!empty($q['query']['grouped']) && $q['query']['grouped'] == 'gr') {
             // grouped..
@@ -120,7 +124,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         
         if (isset($q['on_table']) && !strlen($q['on_table'])) {
             // empty ontable queries.. these are valid..
-            $this->whereAdd("{$tn}.on_table = ''");
+            $this->whereAdd("$tn.on_table = ''");
         }
       
         if (isset($q['query']['person_sum'])) {
@@ -213,8 +217,9 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             if (!$obj) {
                 $roo->jerr("ontable is invalid");
             }
-            if (!method_exists($obj,'relatedWhere')) {
-                $roo->jerr( $q['_related_on_table'] . " Does not have method relatedWhere :" .
+            
+            if (!method_exists($obj,'relatedWhere') && !method_exists($obj,'relatedEventsWhere')) {
+                $roo->jerr( $q['_related_on_table'] . " Does not have method relatedWhere  or relatedEventsWhere:" .
                            implode(',', get_class_methods($obj)));
             }
             if ($obj && method_exists($obj,'relatedWhere')) {
@@ -238,11 +243,25 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                 $this->whereAdd(implode(' OR ' , $w));
             }
             
+            if ($obj && method_exists($obj,'relatedEventsWhere')) {
+                $a = $obj->relatedEventsWhere($q,$roo);
+                if($a){
+                    $this->whereAdd($a);
+                }
+            }
             
             
             
             
         }
+        if (isset($q['_who'])) {
+                  
+                  $e = PDO_DataObject::factory('ext_data');
+                  $this->joinAdd($e,'LEFT');
+            //$this->autoJoinCorePerson();
+            $this->selectAddWho(); 
+        }
+        
         // since roo does not support autojoin yet..
         if (!isset($q['_distinct'])) {
             //$this->autoJoinExtra();
@@ -311,6 +330,9 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         } 
           
         $this->person_name = $au && !empty($au->name) ? $au->name : '';
+        //print_r($au);
+        //exit;
+        //$this->who = $au && !empty($au->name) ? $au->name : '';
         if (empty($au) || (isset($au->id) && empty($au->id))) {
             // not authenticated - and a standard id based object
             $this->person_id = 0;
@@ -320,7 +342,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             $cols = $this->tableColumns();
             $col = isset($cols[$col]) ? $col : 'person_id'; // for BC.... - revert to using person_id
             $this->{$col} = $au->pid();
-            //$this->person_id = $au ? (!empty($au->id) ? $au->id : $au->pid()) : -1;
+            //$this->person_id = $au ? (!empty($au->id) ? $au->id : $au->pid()) : -1;            
         }
         $this->person_table = $au ? $au->tableName() : '';
         $this->ipaddr = isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : 'cli';
@@ -417,7 +439,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                 $this->ipaddr = $_SERVER['HTTP_X_FORWARDED_FOR'];
             }
-        }
+        }        
     }
     
     function beforeUpdate($old, $request,$roo)
@@ -700,4 +722,26 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         $this->selectAdd('join_person_id_id.email as email');
         
     }
+    
+    function autoJoinExtData()
+    {
+       $this->_join .= "LEFT JOIN 
+                            ext_data AS ext_data_id
+                        ON
+                            Events.modx_users_id = ext_data_id.userdata_id";                            
+    }
+    
+    function selectAddWho() 
+    {
+        $this->selectAdd("join_person_id_userdata_id.in_firstname, join_person_id_userdata_id.in_middlename, join_person_id_userdata_id.in_lastname");
+       
+       //$this->selectAdd("             
+       //     CASE
+       //         WHEN ext_data_id.in_middlename='' THEN
+       //             CONCAT_WS(' ', ext_data_id.in_firstname,ext_data_id.in_lastname)
+       //         ELSE
+       //             CONCAT_WS(' ', ext_data_id.in_firstname,ext_data_id.in_middlename,ext_data_id.in_lastname)
+       //     END AS ext_data_full_name 
+       //");
+    }
 }