event_file(file_get_contents($eventfile))) { // Delete the event file, so that it isnt processed again if (Kohana::config('config.event_file_keep')) rename($eventfile,Kohana::config('config.event_dir').'/processed-'.$f); else unlink($eventfile); // Trigger $eo = new Events($events); $eo->trigger(); } else rename($eventfile,Kohana::config('config.event_dir').'/bad-'.$f); } } } private function event_file($file) { $meta = $event = FALSE; $et = $cf = $cn = $dt = NULL; $good = TRUE; $events = array(); foreach (explode("\n",$file) as $line) { // Ignore out blank lines if (! trim($line)) continue; if (preg_match('/^\[metadata\]/',$line)) { $meta = TRUE; $event = FALSE; continue; } elseif (preg_match('/^\[events\]/',$line)) { $meta = FALSE; $event = TRUE; continue; } if ($meta) { list ($k,$v) = explode('=',$line,2); switch ($k) { case 'PROTOCOL': switch ($v) { case 'ADEMCO_CONTACT_ID': $et = 'ContactID'; break; default: throw new Kohana_Exception('Unknown protocol :protocol',array(':protocol'=>$v)); } break; case 'CALLINGFROM': $cf = $v; break; case 'CALLERNAME': $cn = $v; break; case 'TIMESTAMP': $dt = $v; break; default: printf('Extra data in event file - meta section (%s)',$line); } } elseif ($event) { if (! $et) throw new Kohana_Exception('Event data without any protocol'); $eo = new $et; if (! $eo->event($line,$dt,$cf,$cn)) $good = FALSE; else array_push($events,$eo); } } return $events; } } ?>