function notifications_event_tracker in Notifications 6.3
Same name and namespace in other branches
- 6 notifications.cron.inc \notifications_event_tracker()
- 6.2 notifications.cron.inc \notifications_event_tracker()
Keep track of events and update event counter with processed rows eids
Parameters
$op: count, reset, update
$event: event object to track
3 calls to notifications_event_tracker()
- notifications_load_event in ./notifications.cron.inc 
- Get events with static caching. Handle event deletion if not available anymore
- notifications_process_queue in ./notifications.cron.inc 
- Process subscriptions queue
- notifications_process_rows in ./notifications.cron.inc 
- Process rows given query conditions
File
- ./notifications.cron.inc, line 417 
Code
function notifications_event_tracker($op, $event = NULL) {
  $events =& messaging_static(__FUNCTION__);
  switch ($op) {
    case 'count':
      $events[$event->eid] = isset($events[$event->eid]) ? $events[$event->eid] + 1 : 1;
      break;
    case 'delete':
      // Delete event and all related rows. For events no longer available, deleted nodes, comments, etc..
      foreach (array(
        'notifications_queue',
        'notifications_event',
      ) as $table) {
        db_query('DELETE FROM {' . $table . '} WHERE eid = %d', $event->eid);
      }
      if (isset($events[$event->eid])) {
        unset($events[$event->eid]);
      }
      break;
    case 'update':
      if (!empty($events)) {
        foreach ($events as $eid => $count) {
          db_query('UPDATE {notifications_event} SET counter = counter - %d WHERE eid = %d', $count, $eid);
        }
      }
    // Intentional no break (update will also reset)
    case 'reset':
      $events = array();
  }
}