$_SERVER['SERVER_NAME'],'path'=>$this->request()->uri())); if (! $ro->loaded()) { $ro = ORM::factory('Redir',array('servername'=>$_SERVER['SERVER_NAME'],'path'=>NULL)); if (! $ro->loaded()) $ro = ORM::factory('Redir',0); } $ro->count++; $ro->date_last_refer = time(); $ro->save(); // Update our referrer info $rfo = $ro->referrer->where('referrer','=',$this->request()->referrer())->find(); if (! $rfo->loaded()) { $rfo->redir_id = $ro->id; $rfo->referrer = $this->request()->referrer(); } $rfo->count++; $rfo->date_last_refer = $ro->date_last_refer; $rfo->save(); // Prepare the response object. $response = Response::factory(); // Process our redirection options if (preg_match('/^http[s]?:\/\//',$ro->redirect)) { if ($ro->http_status == 300) $response->body(View::factory('300')->set('redir',$ro->redirect)); $response->status($ro->http_status ? $ro->http_status : 302); $response->headers('Location',$ro->redirect); } elseif (preg_match('/^file:\/\/(.*)$/',$ro->redirect,$matches) AND file_exists($matches[1])) { $response->status(200); $response->body(file_get_contents($matches[1])); HTTP::check_cache($this->request(),$response,sha1($response->body())); $response->headers('Content-Type',File::mime_by_ext(pathinfo($matches[1],PATHINFO_EXTENSION))); $response->headers('Content-Length',(string)$response->content_length()); $response->headers('Last-Modified',date('r',$matches[1] ? filemtime($matches[1]) : time())); } else { $response->status(404); $response->body(View::factory('404')); HTTP::check_cache($this->request(),$response,sha1($response->body())); } return $response; } catch (Exception $e) { // Incase we are thrown in this exception. if ($e instanceof HTTP_Exception AND $e->getCode() != 404) { $x = new $e; return $x->get_response(); } return parent::get_response(); } } } ?>