예제 #1
0
 function __construct(HttpRequest $request, $uri = '')
 {
     parent::__construct($request);
     if (!$uri || !preg_match('`^(/|[a-z0-9]+://)`', $uri)) {
         $uri = $request->baseurl . '/' . ltrim($uri, '/');
     }
     $this->headers['Location'] = $uri;
 }
예제 #2
0
파일: FileResponse.php 프로젝트: z7/hydra
 function __construct(Request $request, $filename, $force_download = false)
 {
     if (!is_file($filename) || !is_readable($filename)) {
         throw new \Hydra\Exception\NotFoundHttpException("File not found: {$filename}");
     }
     $this->isPhp = preg_match('/\\.php$/', $filename);
     $this->filename = $filename;
     if ($force_download) {
         $this->headers['Content-Type'] = 'application/octet-stream';
     } else {
         // Try to guess Content-Type
         if (!$this->isPhp) {
             $this->headers['Content-Type'] = MimeTypeGuesser::getInstance()->guess($filename);
         } elseif ($request->app->config->response['guessPhpContentType']) {
             $ext = Utils::fileExt(substr($filename, 0, -4));
             if (isset($request->app->mimetypes[$ext])) {
                 $this->headers['Content-Type'] = $request->app->mimetypes[$ext];
             }
         }
     }
     if (!$this->isPhp) {
         $this->headers['Content-Length'] = filesize($filename);
     }
     $response = $this;
     parent::__construct($request, function () use($response) {
         // We don't want any left-over output when sending a file.
         ob_end_clean();
         if ($response->isPhp) {
             $request = $response->request;
             $app = $response->app;
             require $response->filename;
         } else {
             if ($response->app->config->response['XSendfile']) {
                 $filename = realpath($response->filename);
                 header("X-Sendfile: {$filename}");
             } else {
                 set_time_limit(0);
                 //Set the execution time to infinite.
                 readfile($response->filename);
             }
         }
     });
 }
예제 #3
0
 function __construct(Request $request, $title = null, $body = null)
 {
     parent::__construct($request);
     $this->variables = array('title' => $title, 'body' => $body);
     $this->view = $this->format != 'html' || $this->request->isMain && $this->request instanceof Request\HttpRequest && !$this->request->isAjax ? "default.{$this->format}.twig" : "partial.{$this->format}.twig";
 }