예제 #1
0
 function callbackEmbeddedDoc($m)
 {
     $scm = IDF_Scm::get($this->request->project);
     if (!$scm->isAvailable()) {
         return $m[0];
     }
     $view_source = new IDF_Views_Source();
     $match = array('dummy', $this->request->project->shortname);
     $match[] = isset($m[2]) ? $m[2] : $scm->getMainBranch();
     $match[] = $m[1];
     $res = $view_source->getFile($this->request, $match);
     if ($res->status_code != 200) {
         return $m[0];
     }
     $info = pathinfo($m[1]);
     $fileinfo = array($res->headers['Content-Type'], $m[1], isset($info['extension']) ? $info['extension'] : 'bin');
     if (!IDF_FileUtil::isText($fileinfo)) {
         return $m[0];
     }
     return $res->content;
 }
예제 #2
0
파일: Diff.php 프로젝트: burbuja/indefero
 public function renderCompared($chunks, $filename)
 {
     $fileinfo = IDF_FileUtil::getMimeType($filename);
     $pretty = '';
     if (IDF_FileUtil::isSupportedExtension($fileinfo[2])) {
         $pretty = ' prettyprint';
     }
     $out = '';
     $cc = 1;
     $i = 0;
     foreach ($chunks as $chunk) {
         foreach ($chunk as $line) {
             $line1 = ' ';
             $line2 = ' ';
             $line[2] = strlen($line[2]) ? self::padLine(Pluf_esc($line[2])) : ' ';
             if ($line[0] and $line[1]) {
                 $class = 'diff-c';
                 $line1 = $line2 = $line[2];
             } elseif ($line[0]) {
                 $class = 'diff-r';
                 $line1 = $line[2];
             } else {
                 $class = 'diff-a';
                 $line2 = $line[2];
             }
             $out .= sprintf('<tr class="diff-line"><td class="diff-lc">%s</td><td class="%s mono%s"><code>%s</code></td><td class="diff-lc">%s</td><td class="%s mono%s"><code>%s</code></td></tr>' . "\n", $line[0], $class, $pretty, $line1, $line[1], $class, $pretty, $line2);
         }
         if (count($chunks) > $cc) {
             $out .= '<tr class="diff-next"><td>...</td><td>&nbsp;</td><td>...</td><td>&nbsp;</td></tr>' . "\n";
         }
         $cc++;
         $i++;
     }
     return Pluf_Template::markSafe($out);
 }
예제 #3
0
파일: Source.php 프로젝트: burbuja/indefero
 /**
  * Find the mime type of a requested file.
  *
  * @param stdClass Request file info
  * @param string Commit at which we want the file
  * @param IDF_Scm SCM object
  * @param array  Mime type found or 'application/octet-stream', basename, extension
  */
 public static function getRequestedFileMimeType($file_info, $commit, $scm)
 {
     $mime = IDF_FileUtil::getMimeType($file_info->file);
     if ('application/octet-stream' != $mime[0]) {
         return $mime;
     }
     return IDF_FileUtil::getMimeTypeFromContent($file_info->file, $scm->getFile($file_info));
 }
예제 #4
0
파일: Issue.php 프로젝트: burbuja/indefero
 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_FileUtil::getMimeType($attach->filename);
     if (!IDF_FileUtil::isText($info)) {
         return $this->getAttachment($request, $match);
     }
     // Now we want to look at the file but with links back to the
     // issue.
     $file = IDF_FileUtil::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);
 }
예제 #5
0
 function isText()
 {
     $info = IDF_FileUtil::getMimeType($this->filename);
     return IDF_FileUtil::isText($info);
 }