/** * 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(); } } } }