예제 #1
0
 /**
  * Download action method
  *
  * @param  int $id
  * @return void
  */
 public function download($id)
 {
     if ($this->application->isRegistered('phire-media')) {
         $media = new \Phire\Media\Model\Media();
         $media->getById($id);
         if (isset($media->id)) {
             $click = new Model\Click();
             $click->saveMedia($media->file);
             $ext = strtolower(substr($media->file, strrpos($media->file, '.') + 1));
             $mime = isset($this->mimes[$ext]) ? $this->mimes[$ext] : 'application/octet-stream';
             $size = null;
             if (null !== $this->request->getQuery('size')) {
                 $size = strip_tags($this->request->getQuery('size'));
             }
             if (null !== $size && file_exists($_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $media->library_folder . '/' . $size . '/' . $media->file)) {
                 $file = $_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $media->library_folder . '/' . $size . '/' . $media->file;
             } else {
                 $file = $_SERVER['DOCUMENT_ROOT'] . BASE_PATH . CONTENT_PATH . '/' . $media->library_folder . '/' . $media->file;
             }
             header('Content-Type: ' . $mime);
             if ($this->request->getQuery('download') == 1) {
                 header('Content-Disposition: attachment; filename="' . $media->file . '"');
             }
             echo file_get_contents($file);
         } else {
             if ($this->application->isRegistered('phire-content')) {
                 $controller = new \Phire\Content\Controller\IndexController($this->application, $this->request, $this->response);
                 $controller->error();
             } else {
                 $this->error();
             }
         }
     }
 }