MDL-15405: first draft - function to move a file from user_draft to the good filearea, post form-submission.

This commit is contained in:
scyrma 2008-09-01 10:33:20 +00:00
parent ff1f3607f2
commit c0a15bdf4a

View file

@ -88,6 +88,48 @@ function file_rewrite_urls($text, $contextid, $filepath, $filearea, $itemid, $cu
return preg_replace($re, $newurl, $text);
}
/**
* Moves a file from user_draft filearea to it's final filearea and changes
* it's itemid if desired.
*
* @param object $context current context of the file
* @param int $itemid current itemid
* @param string $filename name of the file
* @param string $filepath path of the file (should usually be '/')
* @param string $newfilearea destination filearea
* @param object $newcontext new context of the file
* @param int $newitemid new itemid (if null, keeps current)
* @param string $newfilename new file name (if null, keeps current)
* @param string $newfilepath new file path (if null, keeps current)
*/
function move_file_to_final_destination($context, $itemid, $filename, $filepath, $newfilearea, $newcontext, $newitemid = null, $newfilename = null, $newfilepath = null) {
$fb = get_file_browser();
$file = $fb->get_file_info($context, 'user_draft', $itemid, $filepath, $filename);
$fid = $file->get_id(); // todo: this doesn't work. silly me can't figure out where to get file id.
// create a new file, based on $file
$fs = get_file_storage();
$newrecord = new object();
$newrecord->contextid = ($newcontext ? $newcontext->id : $context->id);
$newrecord->filearea = $newfilearea;
$newrecord->itemid = ($newitemid ? $newitemid : $itemid);
$newrecord->filepath = ($newfilepath ? $newfilepath : $filepath);
$newrecord->filename = ($newfilename ? $newfilename : $filename);
$newrecord->timecreated = $file->get_timecreated();
$newrecord->timemodified = $file->get_timemodified();
$newrecord->mimetype = $file->get_mimetype();
$newrecord->userid = $file->get_userid();
if ($newfile = $finalfile->create_file_from_storedfile($newrecord, $fid)) {
// delete original file from user_draft
$file->delete();
// todo: return file_info for the new file.
return true;
}
}
/**
* 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.