Fixed issue 143, Makefile not displayed as text.
This commit is contained in:
parent
0460240337
commit
ef93d2da0a
@ -174,7 +174,8 @@ class IDF_Views_Source
|
|||||||
return new Pluf_HTTP_Response_Redirect($fburl);
|
return new Pluf_HTTP_Response_Redirect($fburl);
|
||||||
}
|
}
|
||||||
if ($request_file_info->type != 'tree') {
|
if ($request_file_info->type != 'tree') {
|
||||||
$info = self::getMimeType($request_file_info->file);
|
$info = self::getRequestedFileMimeType($request_file_info,
|
||||||
|
$commit, $scm);
|
||||||
if (!self::isText($info)) {
|
if (!self::isText($info)) {
|
||||||
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),
|
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),
|
||||||
$info[0]);
|
$info[0]);
|
||||||
@ -374,7 +375,8 @@ class IDF_Views_Source
|
|||||||
$branches[0]));
|
$branches[0]));
|
||||||
return new Pluf_HTTP_Response_Redirect($url);
|
return new Pluf_HTTP_Response_Redirect($url);
|
||||||
}
|
}
|
||||||
$info = self::getMimeType($request_file_info->file);
|
$info = self::getRequestedFileMimeType($request_file_info,
|
||||||
|
$commit, $scm);
|
||||||
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),
|
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),
|
||||||
$info[0]);
|
$info[0]);
|
||||||
$rep->headers['Content-Disposition'] = 'attachment; filename="'.$info[1].'"';
|
$rep->headers['Content-Disposition'] = 'attachment; filename="'.$info[1].'"';
|
||||||
@ -406,6 +408,55 @@ class IDF_Views_Source
|
|||||||
return $rep;
|
return $rep;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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 = self::getMimeType($file_info->file);
|
||||||
|
if ('application/octet-stream' != $mime[0]) {
|
||||||
|
return $mime;
|
||||||
|
}
|
||||||
|
return self::getMimeTypeFromContent($file_info->file,
|
||||||
|
$scm->getBlob($file_info, $commit));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the mime type of a file using the fileinfo class.
|
||||||
|
*
|
||||||
|
* @param string Filename/Filepath
|
||||||
|
* @param string File content
|
||||||
|
* @return array Mime type found or 'application/octet-stream', basename, extension
|
||||||
|
*/
|
||||||
|
public static function getMimeTypeFromContent($file, $filedata)
|
||||||
|
{
|
||||||
|
$info = pathinfo($file);
|
||||||
|
$res = array('application/octet-stream',
|
||||||
|
$info['basename'],
|
||||||
|
isset($info['extension']) ? $info['extension'] : 'bin');
|
||||||
|
if (function_exists('finfo_open')) {
|
||||||
|
$finfo = finfo_open(FILEINFO_MIME);
|
||||||
|
$mime = finfo_buffer($finfo, $filedata);
|
||||||
|
finfo_close($finfo);
|
||||||
|
if ($mime) {
|
||||||
|
$res[0] = $mime;
|
||||||
|
}
|
||||||
|
if (!isset($info['extension']) && $mime) {
|
||||||
|
$res[2] = (0 === strpos($mime, 'text/')) ? 'txt' : 'bin';
|
||||||
|
} elseif (!isset($info['extension'])) {
|
||||||
|
$res[2] = 'bin';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Find the mime type of a file.
|
* Find the mime type of a file.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user