request->param('file'); // Find the file extension $ext = pathinfo($file,PATHINFO_EXTENSION); // Remove the extension from the filename $file = substr($file,0,-(strlen($ext)+1)); $f = ''; // If our file is pathed with session, our file is in our session. if ($fd = Session::instance()->get_once($this->request->param('file'))) { $this->response->body($fd); // First try and find media files for the theme-site_id } elseif ($f = Kohana::find_file($x=sprintf('media/site/%s/theme/%s',Config::siteid(),Config::theme()),$file,$ext)) { // Send the file content as the response $this->response->body(file_get_contents($f)); // Try and find media files for the site_id } elseif ($f = Kohana::find_file(sprintf('media/site/%s',Config::siteid()),$file,$ext)) { // Send the file content as the response $this->response->body(file_get_contents($f)); // If not found try a default media file } elseif ($f = Kohana::find_file('media',$file,$ext)) { // Send the file content as the response $this->response->body(file_get_contents($f)); } else { // Return a 404 status $this->response->status(404); } // Generate and check the ETag for this file if (Kohana::$environment === Kohana::PRODUCTION OR Kohana::$config->load('debug')->etag) $this->check_cache(sha1($this->response->body())); // Set the proper headers to allow caching $this->response->headers('Content-Type',File::mime_by_ext($ext)); $this->response->headers('Content-Length',(string)$this->response->content_length()); $this->response->headers('Last-Modified',date('r',$f ? filemtime($f) : time())); } } ?>