}␊ |
if ($request_file_info->type != 'tree') {␊ |
$info = self::getMimeType($request_file_info->file);␊ |
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),␊ |
$info[0]);␊ |
$rep->headers['Content-Disposition'] = 'attachment; filename="'.$info[1].'"';␊ |
if (!self::isText($info)) {␊ |
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),␊ |
$info[0]);␊ |
$rep->headers['Content-Disposition'] = 'attachment; filename="'.$info[1].'"';␊ |
} else {␊ |
// We want to display the content of the file as text␊ |
$rep = new Pluf_HTTP_Response($scm->getBlob($request_file_info, $commit),␊ |
'text/plain');␊ |
}␊ |
return $rep;␊ |
}␊ |
$bc = self::makeBreadCrumb($request->project, $commit, $request_file_info->file);␊ |
|
*␊ |
* @param string Filename/Filepath␊ |
* @param string Path to the mime types database ('/etc/mime.types')␊ |
* @param array Mime type found or 'application/octet-stream' and basename␊ |
* @param array Mime type found or 'application/octet-stream', basename, extension␊ |
*/␊ |
public static function getMimeType($file, $src='/etc/mime.types')␊ |
{␊ |
|
if ('#' != substr($mime, 0, 1)) {␊ |
$elts = preg_split('/ |\t/', $mime, -1, PREG_SPLIT_NO_EMPTY);␊ |
if (in_array($info['extension'], $elts)) {␊ |
return array($elts[0], $info['basename']);␊ |
return array($elts[0], $info['basename'], $info['extension']);␊ |
}␊ |
}␊ |
}␊ |
|
// we consider that if no extension and base name is all␊ |
// uppercase, then we have a text file.␊ |
if ($info['basename'] == strtoupper($info['basename'])) {␊ |
return array('text/plain', $info['basename']);␊ |
return array('text/plain', $info['basename'], 'txt');␊ |
}␊ |
$info['extension'] = 'bin';␊ |
}␊ |
return array('application/octet-stream', $info['basename'], $info['extension']);␊ |
}␊ |
␊ |
/**␊ |
* Find if a given mime type is a text file.␊ |
* This uses the output of the self::getMimeType function.␊ |
*␊ |
* @param array (Mime type, file name, extension)␊ |
* @return bool Is text␊ |
*/␊ |
public static function isText($fileinfo)␊ |
{␊ |
if (0 === strpos($fileinfo[0], 'text/')) {␊ |
return true;␊ |
}␊ |
return array('application/octet-stream', $info['basename']);␊ |
$ext = 'mdtext php js';␊ |
return (in_array($fileinfo[2], explode(' ', $ext)));␊ |
}␊ |
␊ |
/**␊ |