function action()
 {
     if ($this->getParam('queues')) {
         $queues = $this->getParam('queues');
     } else {
         $queues = 'incoming_tracking_events,processing';
     }
     if ($this->getParam('interval')) {
         $interval = $this->getParam('interval');
     } else {
         $interval = 3600 * 24;
     }
     // pull list of event queues to process from command line
     $queues = $this->getParam('queues');
     if ($queues) {
         // parse command line
         $queues = explode(',', $this->getParam('queues'));
     } else {
         // get whatever queues are registered by modules
         $s = owa_coreAPI::serviceSingleton();
         $queues = array_keys($s->getMap('event_queues'));
     }
     if ($queues) {
         foreach ($queues as $queue_name) {
             owa_coreAPI::notice("About to prune archive of event queue: {$queue_name}");
             $q = owa_coreAPI::getEventQueue($queue_name);
             if ($q->connect()) {
                 $q->pruneArchive($interval);
             }
         }
     }
 }
 function action()
 {
     if ($this->getParam('queues')) {
         $queues = $this->getParam('queues');
     } else {
         $queues = 'incoming_tracking_events,processing';
     }
     owa_coreAPI::notice("About to process event queues: {$queues}");
     // pull list of event queues to process from command line
     $queues = $this->getParam('queues');
     if ($queues) {
         // parse command line
         $queues = explode(',', $this->getParam('queues'));
     } else {
         // get whatever queues are registered by modules
         $s = owa_coreAPI::serviceSingleton();
         $queues = array_keys($s->getMap('event_queues'));
     }
     if ($queues) {
         foreach ($queues as $queue_name) {
             $q = owa_coreAPI::getEventQueue($queue_name);
             if ($q->connect()) {
                 $d = owa_coreAPI::getEventDispatch();
                 $more = true;
                 while ($more) {
                     owa_coreAPI::debug('calling receive message');
                     // get an item from the queue
                     $event = $q->receiveMessage();
                     owa_coreAPI::debug('Event returned: ' . print_r($event, true));
                     if ($event) {
                         // process event if needed
                         // lookup which event processor to use to process this event type
                         $processor_action = owa_coreAPI::getEventProcessor($event->getEventType());
                         if ($processor_action) {
                             // processor handles it's own event dispatching, so just return
                             return owa_coreAPI::handleRequest(array('event' => $event), $processor_action);
                         } else {
                             // dispatch event
                             $ret = $d->notify($event);
                         }
                         if ($ret = OWA_EHS_EVENT_HANDLED) {
                             // delete event from queue
                             // second param is for backwards compat. remove soon
                             $q->deleteMessage($event->getQueueGuid());
                         }
                     } else {
                         // if no event, stop the loop
                         $more = false;
                         owa_coreAPI::notice("No more events to process.");
                     }
                 }
                 $q->disconnect();
             }
         }
     } else {
         owa_coreAPI::notice("There are no event queues registered.");
     }
 }
Ejemplo n.º 3
0
 /**
  * Logs an event to the event queue
  *
  * take an owa_event object as a message.
  *
  * @param string $event_type
  * @param object $message
  * @return boolean
  */
 public static function logEvent($event_type, $message = '')
 {
     // debug
     owa_coreAPI::debug("logging event {$event_type}");
     if (owa_coreAPI::getSetting('base', 'error_log_level') > 9) {
         owa_coreAPI::debug("PHP Server Global: " . print_r($_SERVER, true));
     }
     // Check to see if named users should be logged
     if (owa_coreAPI::getSetting('base', 'log_named_users') != true) {
         $cu = owa_coreAPI::getCurrentUser();
         $cu_user_id = $cu->getUserData('user_id');
         if (!empty($cu_user_id)) {
             return false;
         }
     }
     // do not log if the request is robotic
     $service = owa_coreAPI::serviceSingleton();
     $bcap = $service->getBrowscap();
     owa_coreAPI::profile(__CLASS__, __FUNCTION__, __LINE__);
     if (!owa_coreAPI::getSetting('base', 'log_robots')) {
         if ($bcap->robotCheck()) {
             owa_coreAPI::debug("ABORTING: request appears to be from a robot");
             owa_coreAPI::setRequestParam('is_robot', true);
             return;
         }
         owa_coreAPI::profile(__CLASS__, __FUNCTION__, __LINE__);
     }
     // form event if one was not passed
     $class = 'owa_event';
     if (!$message instanceof $class) {
         $event = owa_coreAPI::supportClassFactory('base', 'event');
         $event->setProperties($message);
         $event->setEventType($event_type);
     } else {
         $event = $message;
     }
     // STAGE 1 - set environmental properties from SERVER
     $teh = owa_coreAPI::getInstance('owa_trackingEventHelpers', OWA_BASE_CLASS_DIR . 'trackingEventHelpers.php');
     $environmentals = $service->getMap('tracking_properties_environmental');
     $teh->setTrackerProperties($event, $environmentals);
     // Filter XSS exploits from event properties
     $event->cleanProperties();
     // do not log if the do not log property is set on the event.
     if ($event->get('do_not_log')) {
         return false;
     }
     // check to see if IP should be excluded
     if (owa_coreAPI::isIpAddressExcluded($event->get('ip_address'))) {
         owa_coreAPI::debug("Not logging event. IP address found in exclusion list.");
         return false;
     }
     // queue for later or process event straight away
     if (owa_coreAPI::getSetting('base', 'queue_events') || owa_coreAPI::getSetting('base', 'queue_incoming_tracking_events')) {
         $q = owa_coreAPI::getEventQueue('incoming_tracking_events');
         owa_coreAPI::debug('Queuing ' . $event->getEventType() . ' event with properties: ' . print_r($event->getProperties(), true));
         $q->sendMessage($event);
     } else {
         // lookup which event processor to use to process this event type
         $processor_action = owa_coreAPI::getEventProcessor($event->getEventType());
         return owa_coreAPI::handleRequest(array('event' => $event), $processor_action);
     }
 }
 function getEventQueue($name)
 {
     return owa_coreAPI::getEventQueue($name);
 }
Ejemplo n.º 5
0
 function addToEventQueue()
 {
     // check to see if IP should be excluded
     if (owa_coreAPI::isIpAddressExcluded($this->event->get('ip_address'))) {
         owa_coreAPI::debug("Not dispatching event. IP address found in exclusion list.");
         return;
     }
     if (!$this->event->get('do_not_log')) {
         //filter event
         $this->event = $this->eq->filter('post_processed_tracking_event', $this->event);
         // queue for later or notify listeners
         if (owa_coreAPI::getSetting('base', 'queue_events') || owa_coreAPI::getSetting('base', 'queue_incoming_tracking_events')) {
             $q = owa_coreAPI::getEventQueue('incoming_tracking_events');
             owa_coreAPI::debug('Queuing ' . $this->event->getEventType() . ' event with properties: ' . print_r($this->event->getProperties(), true));
             $q->sendMessage($this->event);
         } else {
             owa_coreAPI::debug('Dispatching ' . $this->event->getEventType() . ' event with properties: ' . print_r($this->event->getProperties(), true));
             $this->eq->notify($this->event);
         }
     } else {
         owa_coreAPI::debug("Not dispatching event due to 'do not log' flag being set.");
     }
 }