check($id)) throw new Kohana_Exception('ContactID event :event is not valid',array(':event'=>$id)); // Process event trigger $this->id = $id; $this->acct = substr($id,0,4); $this->sub = substr($id,4,2); $this->qualifier = substr($id,6,1); $this->type = substr($id,7,3); $this->area = substr($id,10,2); $this->info = substr($id,12,3); $this->checksum = substr($id,15,1); $this->datetime = $dt; // Check the event is from a valid account // @todo This shouldnt stop program execution, rather it should generate an email to an admin $ao = ORM::factory('account',array('alarmphone'=>$cf,'siteid'=>$this->acct)); if (! $ao->loaded()) throw new Kohana_Exception('Event from unknown account :id is not valid',array(':id'=>$ao->id)); $eo = ORM::factory('event'); $eo->account_id = $ao->id; $eo->alarmevent = $id; $eo->datetime = $dt; $eo->save(); // @todo This shouldnt stop program execution, rather it should generate an email to an admin if (! $eo->saved()) throw new Kohana_Exception('ContactID event :event is not valid',array(':event'=>$id)); return $this; } public function __get($k) { if (isset($this->{$k})) return $this->{$k}; else throw new Kohana_Exception('Unknown property :property',array(':property'=>$k));; } // Check that this event is valid private function check($id) { $checksum_map = array( '0'=>10, '1'=>1, '2'=>2, '3'=>3, '4'=>4, '5'=>5, '6'=>6, '7'=>7, '8'=>8, '9'=>9, '*'=>11, '#'=>12, 'A'=>13, 'B'=>14, 'C'=>15, ); if (strlen($id) != 16) throw new Kohana_Exception('ContactID event :event has an invalid length :length',array(':event'=>$id,':length'=>strlen($id))); // Our checksum should be mod15 $c = $t = 0; while ($c