From c0a15bdf4aaef4be3f5c47195eb67e29cb4a121c Mon Sep 17 00:00:00 2001 From: scyrma Date: Mon, 1 Sep 2008 10:33:20 +0000 Subject: [PATCH] MDL-15405: first draft - function to move a file from user_draft to the good filearea, post form-submission. --- lib/filelib.php | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/lib/filelib.php b/lib/filelib.php index e178f27304..4c4a739019 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -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. -- 2.39.5