DataObjects/Core_watch.php
[Pman.Core] / DataObjects / Core_watch.php
index ab6a481..cd7e08d 100644 (file)
@@ -134,7 +134,7 @@ class Pman_Core_DataObjects_Core_watch extends DB_DataObject
     // static really...
     /**
      *
-     * This get's called by roo->jok()
+     * This get's called by roo->addEvent()
      *
      * And searches for matching '$watch->event' == $event->action
      *  along with id/table etc..
@@ -150,6 +150,7 @@ class Pman_Core_DataObjects_Core_watch extends DB_DataObject
     
     function notifyEvent($event)
     {
+        print_r($event);
         //DB_DataObject::DebugLevel(1);
         // see if there are any watches on events..
         // notify everyone flagged except the person doing it...
@@ -172,28 +173,41 @@ class Pman_Core_DataObjects_Core_watch extends DB_DataObject
  
         $watches = $w->fetchAll();
         
-        //print_R($watches);exit;
+       //print_R($watches);exit;
         
         $nn = DB_DataObject::Factory('core_notify');
         $nn->ontable    = $event->on_table;
         $nn->onid       = $event->on_id;
         
         foreach($watches as $watch) {
+            $n = clone($nn);
             if (!$watch->person_id) { // no people??? bugs in watch table
                 $dom = explode(':',$watch->medium);
                 if (count($dom) != 2) {
                     continue;
                 }
+                // in some scenarios (like watching for new articles)
+                // we need to create a core, notify on the medium..
+                // in which case we set the  set $nn->evtype = medium..
+                // in that case - just let the called method generate the notify..
+                
+                
                 $do = DB_DataObject::factory($dom[0]);
                 if (!method_exists($do,$dom[1])) {
                     continue;
                 }
-                $do->{$dom[1]}($event);
+                //echo "calling {$watch->medium}\n";
+                // the triggered method, can either do something
+                // or modify the notify event..
+                if ($do->{$dom[1]}($event, $n) !== false) {
+                    //echo "method did not return false?";
+                    continue;
+                }
+                
                 
-                continue;
             }
             
-            $n = clone($nn);
+            
             $n->trigger_person_id = $event->person_id;
             $n->trigger_event_id = $event->id;
             $n->person_id = $watch->person_id;
@@ -207,7 +221,7 @@ class Pman_Core_DataObjects_Core_watch extends DB_DataObject
                 // we have a item in the queue for that waiting to be sent..
                 continue;
             }
-            
+            //echo "inserting notify?";
             $n->act_start( date("Y-m-d H:i:s") );
             $n->insert();
             
@@ -225,7 +239,7 @@ class Pman_Core_DataObjects_Core_watch extends DB_DataObject
             }
             $t = DB_DataObject::Factory($this->tableName());
             $t->setFrom($dd);
-            if ($dd->find(true)) {
+            if ($t->find(true)) {
                 continue;
             }
             $t = DB_DataObject::Factory($this->tableName());