Fixed firstname lastname to call to fullname function
[moodle.git] / file.php
1 <?php
3     /**
4      * file.php - Used to fetch file from the data directory
5      *
6      * This script file fetches files from the data directory (dataroot)<br>
7      * Syntax:   file.php/courseid/dir/.../dir/filename.ext
8      *
9      * @uses $CFG
10      * @uses FORMAT_HTML
11      * @uses FORMAT_MOODLE
12      * @author Martin Dougiamas
13      * @version $Id$
14      * @package moodlecore
15      */
16      
17     require_once('config.php');
18     require_once('files/mimetypes.php');
20     if (empty($CFG->filelifetime)) {
21         $CFG->filelifetime = 86400;     /// Seconds for files to remain in caches
22     }
24     if (isset($file)) {     // workaround for situations where / syntax doesn't work
25         $pathinfo = $file;
26     } else {
27         $pathinfo = get_slash_arguments('file.php');
28     }
30     if (!$pathinfo) {
31         error('No file parameters!');
32     }
34     $pathinfo = urldecode($pathinfo);
36     if (! $args = parse_slash_arguments($pathinfo)) {
37         error('No valid arguments supplied');
38     }
40     $numargs = count($args);
41     if ($numargs < 2 or empty($args[1])) {
42         error('No valid arguments supplied');
43     }
45     $courseid = (integer)$args[0];
47     if (!$course = get_record('course', 'id', $courseid)) {  // Course ID must be specified
48         error('Invalid course ID');
49     }
51     if ($course->category) {
52         require_login($courseid);
53     } else if ($CFG->forcelogin) {
54         require_login();
55     }
57     $pathname = $CFG->dataroot . $pathinfo;
58     if ($pathargs = explode('?', $pathname)) {
59         $pathname = $pathargs[0];            // Only keep what's before the '?'
60     }
61     $filename = $args[$numargs-1];
62     if ($fileargs = explode('?', $filename)) {
63         $filename = $fileargs[0];            // Only keep what's before the '?'
64     }
66     if (file_exists($pathname)) {
67         $lastmodified = filemtime($pathname);
68         $mimetype = mimeinfo('type', $filename);
70         header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $lastmodified) . ' GMT');
71         header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $CFG->filelifetime) . ' GMT');
72         header('Cache-control: max_age = '. $CFG->filelifetime);
73         header('Pragma: ');
74         header('Content-disposition: inline; filename='. $filename);
77         if (empty($CFG->filteruploadedfiles)) {
78             header('Content-length: '. filesize($pathname));
79             header('Content-type: '. $mimetype);
80             readfile($pathname);
82         } else {     /// Try and put the file through filters
83             if ($mimetype == 'text/html') {
84                 $options->noclean = true;
85                 $output = format_text(implode('', file($pathname)), FORMAT_HTML, $options, $courseid);
87                 header('Content-length: '. strlen($output));
88                 header('Content-type: text/html');
89                 echo $output;
90     
91             } else if ($mimetype == 'text/plain') {
92                 $options->newlines = false;
93                 $options->noclean = true;
94                 $output = '<pre>'. format_text(implode('', file($pathname)), FORMAT_MOODLE, $options, $courseid) .'</pre>';
95                 header('Content-length: '. strlen($output));
96                 header('Content-type: text/html');
97                 echo $output;
98     
99             } else {    /// Just send it out raw
100                 header('Content-length: '. filesize($pathname));
101                 header('Content-type: '. $mimetype);
102                 readfile($pathname);
103             }
104         }
105     } else {
106         header('HTTP/1.0 404 not found');
107         error(get_string('filenotfound', 'error'), $CFG->wwwroot .'/course/view.php?id='. $courseid);
108     }
110     exit;
111 ?>