MDL-33550 Correctly process situation when file reference source is missing
- do not die with fatal error if source file in moodle internal repository is missing; - moved code duplication for moodle repositories into class repository (functions send_file, get_reference_details, get_file_by_reference, get_file_reference); - update file status after repository::sync_external_file so we know that it is missing (or not missing anymore). Do not run this function more than once for file within one request; - display readable name for Private Files and Server files with the new format; - display broken icon in filemanager if we know that source is missing, display information (for admin) where it was located before: see repository::get_reference_details() and extending classes; - removed unnecessary queries in stored_file::sync_external_file(); - syncronize files before displaying it's size in mod_resource, do not query directly
This commit is contained in:
+4
-1
@@ -596,6 +596,9 @@ function file_get_drafarea_files($draftitemid, $filepath = '/') {
|
||||
$item->datemodified = $file->get_timemodified();
|
||||
$item->datecreated = $file->get_timecreated();
|
||||
$item->isref = $file->is_external_file();
|
||||
if ($item->isref && $file->get_status() == 666) {
|
||||
$item->originalmissing = true;
|
||||
}
|
||||
// find the file this draft file was created from and count all references in local
|
||||
// system pointing to that file
|
||||
$source = unserialize($file->get_source());
|
||||
@@ -2310,7 +2313,7 @@ function send_stored_file($stored_file, $lifetime=86400 , $filter=0, $forcedownl
|
||||
}
|
||||
|
||||
// handle external resource
|
||||
if ($stored_file->is_external_file()) {
|
||||
if ($stored_file && $stored_file->is_external_file()) {
|
||||
$stored_file->send_file($lifetime, $filter, $forcedownload, $options);
|
||||
die;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user