DataObjects/Core_notify.php
[Pman.Core] / DataObjects / Core_notify.php
index 40063d0..4c02e6f 100644 (file)
@@ -51,13 +51,21 @@ class Pman_Core_DataObjects_Core_notify extends DB_DataObject
     function person($set = false)
     {
         if ($set !== false) {
+            $this->person_table = is_object($set) ? $set->tableName() : '';
             $this->person_id = is_object($set) ? $set->id : $set;
             return;
         }
+        static $cache  =array();
+        $person_table = empty($this->person_table) ? 'Person' : $this->person_table;
+        $col = $person_table == "Person" ? 'person_id' : $person_table . '_id';
         
-        $person_table = 
-        $c = DB_DataObject::Factory('Person');
-        $c->get($this->person_id);
+        if (isset($cache[$person_table .':'. $this->{$col}])) {
+            return $cache[$person_table .':'. $this->{$col}];
+        }
+        
+        $c = DB_DataObject::Factory($person_table);
+        $c->get($this->{$col});
+        $cache[$person_table .':'. $this->{$col}] = $c;
         return $c;
         
     }
@@ -82,6 +90,24 @@ class Pman_Core_DataObjects_Core_notify extends DB_DataObject
         return false;
         
     }
+    
+    function lookup($obj, $person, $evtype='')
+    {
+        $x = DB_DataObject::Factory($this->tableName());
+        $x->object($obj);
+        $x->person($person);
+        if (!empty($evtype)) {
+            $x->evtype = $evtype;
+        }
+        if ($x->count() != 1) {
+            return false;
+        }
+        $x->find(true);
+        return $x;
+        
+    }
+    
+    
     function beforeDelete($dependants_array, $roo) {
         if ($this->delivered()) {
             $roo->jerr("you can not delete a record of a successfull delivery");