| 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]);␊ |
|
| $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].'"';␊ |
|
| 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.␊ |
| *␊ |