$v) { $this->{$k} = $v; } } else { Error("No row for Frame " . $IdOrRow ); } } // end function __construct public function Storage() { return $this->Event()->Storage(); } public function Event() { return new Event( $this->{'EventId'} ); } public function __call( $fn, array $args){ if(isset($this->{$fn})){ return $this->{$fn}; #array_unshift($args, $this); #call_user_func_array( $this->{$fn}, $args); } } public function Path() { $Storage = $this->Storage(); return $Storage->Path().'/'.$this->Relative_Path(); } public function Relative_Path() { $event_path = ""; if ( ZM_USE_DEEP_STORAGE ) { $event_path = $this->{'MonitorId'} .'/'.strftime( "%y/%m/%d/%H/%M/%S", $this->Time() ) ; } else { $event_path = $this->{'MonitorId'} .'/'.$this->{'Id'} ; } return( $event_path ); } public function getImageSrc( ) { return ZM_BASE_URL.'/index.php?view=image&fid='.$this->{'Id'}; } // end function getImageSrc public static function find( $parameters = array(), $limit = NULL ) { $sql = 'SELECT * FROM Frames'; $values = array(); if ( sizeof($parameters) ) { $sql .= ' WHERE ' . implode( ' AND ', array_map( function($v){ return $v.'=?'; }, array_keys( $parameters ) ) ); $values = array_values( $parameters ); } if ( $limit ) { $sql .= ' LIMIT ' . $limit; } Error("sql:$sql ". implode(",", $values)); $results = dbFetchAll( $sql, NULL, $values ); if ( $results ) { Error("results" . sizeof($results) ); return array_map( function($id){ return new Frame($id); }, $results ); } Error("No results"); } public static function find_one( $parameters = array() ) { $results = Frame::find( $parameters, 1 ); if ( ! sizeof( $results ) ) { Debug("No Frame found"); return; } return $results[0]; } } # end class ?>