DataObjects/Core_notify_recur.php
[Pman.Core] / DataObjects / Events.php
index 91498f3..33d1b76 100644 (file)
@@ -189,18 +189,22 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
             
             
         }
-        
+        // since roo does not support autojoin yet..
+        if (!isset($q['_distinct'])) {
+            $this->autoJoinExtra();
+        }
         
         
         
         
             
     }
-    
-    
-    function autoJoin()
+     
+    function autoJoinExtra()
     {
-        parent::autoJoin();
+        //$ret = parent::autoJoin();
+        // DB_DataObject::debugLevel(1);
+        
         // now try and magically join person_table to the right table..
         $tn = $this->tableName();
         $pt = DB_DataObject::Factory($this->tableName());
@@ -208,22 +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} as join_person_table_{$tbl}
-                    ON {$tn}.person_id = join_person_table_{$tbl}
-                        AND {$tn}.person_table = '{$tbl}'
-            
-            
+                LEFT JOIN {$tbl} AS  join_person_table_{$tbl}
+                    ON {$tn}.person_id = join_person_table_{$tbl}.id
+                        AND $cond
             ";
         }
         foreach($cols as $col=>$whens) {
@@ -236,9 +254,8 @@ class Pman_Core_DataObjects_Events extends DB_DataObject
                     as person_table_{$col}"
             );
         }
-        
-        
-        
+        //return $ret;
+         
     }