MDL-17457 migrated all modules to new db/install.php; added upgrade.txt file for...
[moodle.git] / draftfile.php
1 <?php  // $Id$
3     require_once('config.php');
4     require_once('lib/filelib.php');
6     require_login();
7     if (isguestuser()) {
8         print_error('noguest');
9     }
11     // disable moodle specific debug messages
12     disable_debugging();
14     $relativepath = get_file_argument();
16     // relative path must start with '/'
17     if (!$relativepath) {
18         print_error('invalidargorconf');
19     } else if ($relativepath{0} != '/') {
20         print_error('pathdoesnotstartslash');
21     }
23     // extract relative path components
24     $args = explode('/', ltrim($relativepath, '/'));
26     if (count($args) == 0) { // always at least user id
27         print_error('invalidarguments');
28     }
30     $contextid = (int)array_shift($args);
31     $filearea = array_shift($args);
33     $context = get_context_instance_by_id($contextid);
34     if ($context->contextlevel != CONTEXT_USER) {
35         print_error('invalidarguments');
36     }
38     $userid = $context->instanceid;
39     if ($USER->id != $userid) {
40         print_error('invaliduserid');
41     }
43     switch ($filearea) {
44         case 'user_draft':
45             $itemid = (int)array_shift($args);
46             break;
47         default:
48             send_file_not_found();
49     }
51     $relativepath = '/'.implode('/', $args);
54     $fs = get_file_storage();
56     $fullpath = $context->id.$filearea.$itemid.$relativepath;
58     if (!$file = $fs->get_file_by_hash(sha1($fullpath)) or $file->get_filename() == '.') {
59         send_file_not_found();
60     }
62     // ========================================
63     // finally send the file
64     // ========================================
65     session_write_close(); // unlock session during fileserving
66     send_stored_file($file, 0, false, true); // force download - security first!