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);
|
||||
}
|
||||
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)) {
|
||||
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),
|
||||
$info[0]);
|
||||
@ -374,7 +375,8 @@ class IDF_Views_Source
|
||||
$branches[0]));
|
||||
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),
|
||||
$info[0]);
|
||||
$rep->headers['Content-Disposition'] = 'attachment; filename="'.$info[1].'"';
|
||||
@ -406,6 +408,55 @@ class IDF_Views_Source
|
||||
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.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user