}
// security: limit access to existing course subdirectories
- // note: course ID must be specified
- // note: the lang field is needed for the course language switching hack in weblib.php
- if (!$course = get_record_sql("SELECT id, lang FROM {$CFG->prefix}course WHERE id='".(int)$args[0]."'")) {
+ if (!$course = get_record_sql("SELECT * FROM {$CFG->prefix}course WHERE id='".(int)$args[0]."'")) {
error('Invalid course ID');
}
function send_file($path, $filename, $lifetime=86400 , $filter=0, $pathisstring=false, $forcedownload=false, $mimetype='') {
global $CFG;
- // Use given MIME type if specified, otherwise guess it using mimeinfo.
- // Always use application/x-forcedownload if that's requested.
- $mimetype = $forcedownload ? 'application/x-forcedownload' :
- ($mimetype ? $mimetype : mimeinfo('type', $filename));
+ // Use given MIME type if specified, otherwise guess it using mimeinfo.
+ // IE, Konqueror and Opera open html file directly in browser from web even when directed to save it to disk :-O
+ // only Firefox saves all files locally before opening when content-disposition: attachment stated
+ $isFF = check_browser_version('Firefox', '1.5'); // only FF > 1.5 properly tested
+ $mimetype = ($forcedownload and !$isFF) ? 'application/x-forcedownload' :
+ ($mimetype ? $mimetype : mimeinfo('type', $filename));
$lastmodified = $pathisstring ? time() : filemtime($path);
$filesize = $pathisstring ? strlen($path) : filesize($path);
switch ($brand) {
+ case 'Firefox': /// Mozilla Firefox browsers
+
+ if (preg_match("/Firefox\/([0-9\.]+)/i", $agent, $match)) {
+ if (version_compare($match[1], $version) >= 0) {
+ return true;
+ }
+ }
+ break;
+
+
case 'Gecko': /// Gecko based browsers
if (substr_count($agent, 'Camino')) {