| | <?php |
| |
|
| | namespace Kanboard\Controller; |
| |
|
| | use Kanboard\Core\ObjectStorage\ObjectStorageException; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | class FileViewerController extends BaseController |
| | { |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | protected function getFileContent(array $file) |
| | { |
| | $content = ''; |
| |
|
| | try { |
| | if ($file['is_image'] == 0) { |
| | $content = $this->objectStorage->get($file['path']); |
| | } |
| | } catch (ObjectStorageException $e) { |
| | $this->logger->error($e->getMessage()); |
| | } |
| |
|
| | return $content; |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | 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()); |
| | } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | 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), |
| | ))); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function image() |
| | { |
| | $file = $this->getFile(); |
| | $this->renderFileWithCache($file, $this->helper->file->getImageMimeType($file['name'])); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | public function browser() |
| | { |
| | $file = $this->getFile(); |
| | $this->renderFileWithCache($file, $this->helper->file->getBrowserViewType($file['name'])); |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | 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/png'); |
| |
|
| | 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()); |
| |
|
| | |
| | $data = $this->objectStorage->get($file['path']); |
| | $this->$model->generateThumbnailFromData($file['path'], $data); |
| | $this->objectStorage->output($this->$model->getThumbnailPath($file['path'])); |
| | } |
| | } |
| | } |
| |
|
| | |
| | |
| | |
| | |
| | |
| | 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()); |
| | } |
| | } |
| | } |
| |
|