-
<?php
/**
* Table Definition for core_watch
*
*
*/
-require_once 'DB/DataObject.php';
+class_exists('DB_DataObject') ? '' : require_once 'DB/DataObject.php';
class Pman_Core_DataObjects_Core_watch extends DB_DataObject
{
if (!empty($q['_split_event_name'])) {
$this->selectAdd("
- substr( event, LOCATE(event, '.',1)) as event_left,
- substr( event, 0, LOCATE(event, '.)) as event_right
+ substr( event, 1, LOCATE( '.',event) -1) as event_left,
+ substr( event, LOCATE( '.',event) +1) as event_right,
+ (SELECT
+ display_name FROM core_enum where etype = '{$this->escape($q['_split_event_name'])}'
+ AND name = substr( event, LOCATE( '.',event) +1)
+ ) as event_right_display_name
");
* @param int $onid - the id of the row changed
* @param string $whereAdd (optiona) - a DB whereAdd() condition to filter the search for watches
* @param datetime $when (default now) - date/time to create the notification for (Eg. end of day..)
+ * @param string $to_ontable - notify event create on this table, rather than watch table.
+ * @param string $to_id - notify event create on this id, rather than watch id.
+ *
*
*/
- function notify($ontable , $onid, $whereAdd = false, $when=false)
+ function notify($ontable , $onid, $whereAdd = false, $when=false, $to_ontable=false, $to_onid=false)
{
$w = DB_DataObject::factory('core_watch');
if ($whereAdd !== false) {
continue;
}
-
-
$nn = DB_DataObject::Factory('core_notify');
- $nn->ontable = $ontable;
- $nn->onid = $onid;
+ $nn->ontable = $to_ontable === false ? $ontable : $to_ontable;
+ $nn->onid = $to_onid === false ? $onid : $to_onid;
$nn->evtype = $w->medium;
$nn->person_id = $w->person_id;
function notifyEvent($event)
{
//print_r($event);
- //DB_DataObject::DebugLevel(1);
+ //DB_DataObject::DebugLevel(1);
// see if there are any watches on events..
// notify everyone flagged except the person doing it...
// this is very basic logic... -
$w->event = $event->action;
$w->active = 1;
-
- $w->whereAdd('person_id != '. (int) $event->person_id);
+ // not sure why this is here... - it breaks on the reader article ->
+ if ($event->person_id) {
+ $w->whereAdd('person_id != '. (int) $event->person_id);
+ }
$watches = $w->fetchAll();
- //print_R($watches); //exit;
+ //print_R($watches);
$nn = DB_DataObject::Factory('core_notify');
$nn->ontable = $event->on_table;
$n->trigger_event_id = $event->id;
$n->person_id = $watch->person_id;
$n->watch_id = $watch->id;
+ $n->evtype = $watch->medium;
// does this watch already have a flag...
$nf = clone($n);
$n->act_start( empty($n->act_start) ? date("Y-m-d H:i:s") : $n->act_start );
$n->insert();
}
-
-
-
+
}
function initDatabase($roo, $data) {
foreach($data as $d) {