DataObjects/Core_notify_recur.php
[Pman.Core] / DataObjects / Events.php
index ee955e0..33d1b76 100644 (file)
@@ -190,7 +190,9 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             
         }
         // since roo does not support autojoin yet..
-        $this->autoJoinExtra();
+        if (!isset($q['_distinct'])) {
+            $this->autoJoinExtra();
+        }
         
         
         
@@ -201,7 +203,7 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
     function autoJoinExtra()
     {
         //$ret = parent::autoJoin();
-        DB_DataObject::debugLevel(1);
+        // DB_DataObject::debugLevel(1);
         
         // now try and magically join person_table to the right table..
         $tn = $this->tableName();
@@ -210,24 +212,36 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
         $pt->selectAdD('distinct(person_table) as person_table');
         $pt->whereAdd('person_table IS NOT NULL AND LENGTH(person_table) > 0');
         $tbls = $pt->fetchAll('person_table');
+        $pers = DB_DataObject::Factory('Person');
+        $ptbl = $pers->tableName();
+        if (!in_array($ptbl,$tbls)) {
+            $tbls[] = $ptbl;
+            
+        }
         foreach($tbls as $tbl) {
             
             // find all the columns from the joined table..
             $st = DB_DataObject::Factory($tbl);
             $tcols = array_keys($st->table());
+            
+            $cond = "{$tn}.person_table = '{$tbl}'";
+            if ($tbl == $ptbl) {
+                $cond = "( $cond OR {$tn}.person_table  = '')";
+            }
+            
             foreach($tcols as $col) {
                 if ($col == 'passwd') {
                     continue;
                 }
                 $cols[$col]  = isset($cols[$col] ) ? $cols[$col]  : array();
-                $cols[$col][] = "WHEN {$tn}.person_table = '$tbl'  THEN join_person_table_{$tbl}.{$col}";
+                $cols[$col][] = "WHEN $cond  THEN join_person_table_{$tbl}.{$col}";
             }
             // id's are hard coded...
+            
             $this->_join .= "
-                LEFT JOIN {$tbl}  join_person_table_{$tbl}
+                LEFT JOIN {$tbl} AS  join_person_table_{$tbl}
                     ON {$tn}.person_id = join_person_table_{$tbl}.id
-                        AND {$tn}.person_table = '{$tbl}'
-             
+                        AND $cond
             ";
         }
         foreach($cols as $col=>$whens) {