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)
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.
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 .= '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.
'<a href="'.$ffurl.'" >'.$file.'</a><br />';
}
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 .= '<a href="'.$ffurl.'" ><img class="icon" src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$file.'</a> ';
}
}
foreach ($files as $key => $file) {
$icon = mimeinfo('icon', $file);
-
- $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file";
-
+ $ffurl = get_file_url("$filearea/$file");
$output .= '<a href="'.$ffurl.'" ><img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.$file.'</a>';
$icon = mimeinfo('icon', $file);
- $ffurl = "$CFG->wwwroot/file.php?file=/$filearea/$file";
+ $ffurl = get_file_url("$filearea/$file");
$output .= '<a href="'.$ffurl.'" ><img src="'.$CFG->pixpath.'/f/'.$icon.'" alt="'.$icon.'" />'.$file.'</a>';
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 = '<img src="'.$CFG->pixpath.'/f/'.$icon.'" class="icon" alt="'.$icon.'" />'.