From: scyrma Date: Tue, 8 Apr 2008 03:04:52 +0000 (+0000) Subject: MDL-13792 - Commiting Patch by Skodak, fixing problem with japanese characters under... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=74369ab5678489c10ebfbacd7c41e5d25598d982;p=moodle.git MDL-13792 - Commiting Patch by Skodak, fixing problem with japanese characters under some conditions. This has been reported to work, if nobody else comes foward with bugs related to this, it will need to be changed everywhere else where there is no urlencoding done at this time. (merge from 1.8 and 1.9) --- diff --git a/lib/filelib.php b/lib/filelib.php index c4e5d5268f..55ceabcfa6 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -2,6 +2,40 @@ define('BYTESERVING_BOUNDARY', 's1k2o3d4a5k6s7'); //unique string constant +function get_file_url($path, $options=null, $type='coursefile') { + global $CFG; + + $path = trim($path, '/'); // no leading and trailing slashes + + // type of file + switch ($type) { + case 'coursefile': + default: + $url = "$CFG->wwwroot/file.php"; + } + + if ($CFG->slasharguments) { + $parts = explode('/', $path); + $parts = array_map('urlencode', $parts); + $path = implode('/', $parts); + $ffurl = "$CFG->wwwroot/file.php/$path"; + $separator = '?'; + } else { + $path = urlencode("/$path"); + $ffurl = "$CFG->wwwroot/file.php?file=$path"; + $separator = '&'; + } + + if ($options) { + foreach ($options as $name=>$value) { + $ffurl = $ffurl.$separator.$name.'='.$value; + $separator = '&'; + } + } + + return $ffurl; +} + /** * Fetches content of file from Internet (using proxy if defined). Uses cURL extension if present. * Due to security concerns only downloads from http(s) sources are supported. diff --git a/mod/assignment/lib.php b/mod/assignment/lib.php index 193286513a..1dbd08f7cf 100644 --- a/mod/assignment/lib.php +++ b/mod/assignment/lib.php @@ -1684,12 +1684,7 @@ class assignment_base { foreach ($files as $key => $file) { $icon = mimeinfo('icon', $file); - - if ($CFG->slasharguments) { - $ffurl = "$CFG->wwwroot/file.php/$filearea/$file"; - } else { - $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file"; - } + $ffurl = get_file_url("$filearea/$file", array('forcedownload'=>1)); $output .= ''.$icon.''. ''.$file.'
'; diff --git a/mod/assignment/type/upload/assignment.class.php b/mod/assignment/type/upload/assignment.class.php index 428d4aed64..aaa0f335c6 100644 --- a/mod/assignment/type/upload/assignment.class.php +++ b/mod/assignment/type/upload/assignment.class.php @@ -300,10 +300,10 @@ class assignment_upload extends assignment_base { } if ($files = get_directory_list($basedir, 'responses')) { + require_once($CFG->libdir.'/filelib.php'); foreach ($files as $key => $file) { - require_once($CFG->libdir.'/filelib.php'); $icon = mimeinfo('icon', $file); - $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file"; + $ffurl = get_file_url("$filearea/$file"); $output .= ''.$icon.''.$file.' '; } } @@ -361,9 +361,7 @@ class assignment_upload extends assignment_base { foreach ($files as $key => $file) { $icon = mimeinfo('icon', $file); - - $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file"; - + $ffurl = get_file_url("$filearea/$file"); $output .= ''.$icon.''.$file.''; @@ -419,7 +417,7 @@ class assignment_upload extends assignment_base { $icon = mimeinfo('icon', $file); - $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file"; + $ffurl = get_file_url("$filearea/$file"); $output .= ''.$icon.''.$file.''; diff --git a/mod/assignment/type/uploadsingle/assignment.class.php b/mod/assignment/type/uploadsingle/assignment.class.php index c6624e714e..cf71718524 100644 --- a/mod/assignment/type/uploadsingle/assignment.class.php +++ b/mod/assignment/type/uploadsingle/assignment.class.php @@ -16,17 +16,12 @@ class assignment_uploadsingle extends assignment_base { if ($basedir = $this->file_area($userid)) { if ($files = get_directory_list($basedir)) { - + require_once($CFG->libdir.'/filelib.php'); foreach ($files as $key => $file) { - require_once($CFG->libdir.'/filelib.php'); $icon = mimeinfo('icon', $file); + $ffurl = get_file_url("$filearea/$file"); - if ($CFG->slasharguments) { - $ffurl = "$CFG->wwwroot/file.php/$filearea/$file"; - } else { - $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file"; - } //died right here //require_once($ffurl); $output = ''.$icon.''.