objectStorage->get($file['path']); } } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); } return $content; } /** * Output file with cache * * @param array $file * @param $mimetype */ protected function renderFileWithCache(array $file, $mimetype) { $etag = md5($file['path']); if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') { $this->response->status(304); } else { try { $this->response->withContentType($mimetype); $this->response->withCache(5 * 86400, $etag); $this->response->send(); $this->objectStorage->output($file['path']); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); } } } /** * Show file content in a popover * * @access public */ public function show() { $file = $this->getFile(); $type = $this->helper->file->getPreviewType($file['name']); $params = array('file_id' => $file['id'], 'project_id' => $this->request->getIntegerParam('project_id')); if ($file['model'] === 'taskFileModel') { $params['task_id'] = $file['task_id']; } $this->response->html($this->template->render('file_viewer/show', array( 'file' => $file, 'params' => $params, 'type' => $type, 'content' => $this->getFileContent($file), ))); } /** * Display image * * @access public */ public function image() { $file = $this->getFile(); $this->renderFileWithCache($file, $this->helper->file->getImageMimeType($file['name'])); } /** * Display file in browser * * @access public */ public function browser() { $file = $this->getFile(); $this->renderFileWithCache($file, $this->helper->file->getBrowserViewType($file['name'])); } /** * Display image thumbnail * * @access public */ public function thumbnail() { $file = $this->getFile(); $model = $file['model']; $filename = $this->$model->getThumbnailPath($file['path']); $etag = md5($filename); $this->response->withCache(5 * 86400, $etag); $this->response->withContentType('image/jpeg'); if ($this->request->getHeader('If-None-Match') === '"'.$etag.'"') { $this->response->status(304); } else { $this->response->send(); try { $this->objectStorage->output($filename); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); // Try to generate thumbnail on the fly for images uploaded before Kanboard < 1.0.19 $data = $this->objectStorage->get($file['path']); $this->$model->generateThumbnailFromData($file['path'], $data); $this->objectStorage->output($this->$model->getThumbnailPath($file['path'])); } } } /** * File download * * @access public */ public function download() { try { $file = $this->getFile(); $this->response->withFileDownload($file['name']); $this->response->send(); $this->objectStorage->output($file['path']); } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); } } }