| $prj = $request->project;␊ |
| $attach = Pluf_Shortcuts_GetObjectOr404('IDF_IssueFile', $match[2]);␊ |
| $prj->inOr404($attach->get_comment()->get_issue());␊ |
| $info = IDF_Views_Source::getMimeType($attach->filename);␊ |
| $mime = 'application/octet-stream';␊ |
| if (strpos($info[0], 'image/') === 0) {␊ |
| $mime = $info[0];␊ |
| }␊ |
| $res = new Pluf_HTTP_Response_File(Pluf::f('upload_issue_path').'/'.$attach->attachment,␊ |
| 'application/octet-stream');␊ |
| $res->headers['Content-Disposition'] = 'attachment; filename="'.$attach->filename.'"';␊ |
| $mime);␊ |
| if ($mime == 'application/octet-stream') {␊ |
| $res->headers['Content-Disposition'] = 'attachment; filename="'.$attach->filename.'"';␊ |
| }␊ |
| return $res;␊ |
| }␊ |
| ␊ |
| /**␊ |
| * View a given attachment.␊ |
| */␊ |
| public $viewAttachment_precond = array('IDF_Precondition::accessIssues');␊ |
| public function viewAttachment($request, $match)␊ |
| {␊ |
| $prj = $request->project;␊ |
| $attach = Pluf_Shortcuts_GetObjectOr404('IDF_IssueFile', $match[2]);␊ |
| $prj->inOr404($attach->get_comment()->get_issue());␊ |
| // If one cannot see the attachement, redirect to the␊ |
| // getAttachment view.␊ |
| $info = IDF_Views_Source::getMimeType($attach->filename);␊ |
| if (!IDF_Views_Source::isText($info)) {␊ |
| return $this->getAttachment($request, $match);␊ |
| }␊ |
| // Now we want to look at the file but with links back to the␊ |
| // issue.␊ |
| $file = IDF_Views_Source::highLight($info, ␊ |
| file_get_contents(Pluf::f('upload_issue_path').'/'.$attach->attachment));␊ |
| $title = sprintf(__('View %s'), $attach->filename);␊ |
| return Pluf_Shortcuts_RenderToResponse('idf/issues/attachment.html',␊ |
| array(␊ |
| 'attachment' => $attach,␊ |
| 'page_title' => $title,␊ |
| 'comment' => $attach->get_comment(),␊ |
| 'issue' => $attach->get_comment()->get_issue(),␊ |
| 'file' => $file,␊ |
| ),␊ |
| $request);␊ |
| }␊ |
| ␊ |
| /**␊ |
| * View list of issues for a given project with a given status.␊ |
| */␊ |
| public $listStatus_precond = array('IDF_Precondition::accessIssues');␊ |