From: moodler Date: Tue, 2 Sep 2008 09:46:29 +0000 (+0000) Subject: Moved some filepicker form processing to formslib.php (temporary) X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=924ddb15f1de0c7e870a2ebbb513b036febb74d4;p=moodle.git Moved some filepicker form processing to formslib.php (temporary) --- diff --git a/lib/file/file_storage.php b/lib/file/file_storage.php index c66636b522..e6a16c3359 100644 --- a/lib/file/file_storage.php +++ b/lib/file/file_storage.php @@ -691,47 +691,6 @@ class file_storage { $DB->insert_record('files_cleanup', $rec); } - /** - * Moves a file from user_draft filearea to it's final filearea and changes - * it's itemid if desired. - * - * @param int $draftfileid file id of the draft file - * @param object $context new context of the file - * @param string $filearea destination filearea - * @param int $itemid new itemid - * @param string $filepath new file path - * @param string $filename new file name (if null, keeps current) - * @return new stored_file - */ - function move_to_final_destination($draftfileid, $context, $filearea, $itemid, $filepath, $filename = null) { - - if (!$file = $this->get_file_by_id($draftfileid)) { - return false; - } - $params = $file->get_params(); - - $fs = get_file_storage(); - - $newrecord = new object(); - $newrecord->contextid = $context->id; - $newrecord->filearea = $filearea; - $newrecord->itemid = $itemid; - $newrecord->filepath = $filepath; - $newrecord->filename = ($filename ? $filename : $params['filename']); - - $newrecord->timecreated = $file->get_timecreated(); - $newrecord->timemodified = $file->get_timemodified(); - $newrecord->mimetype = $file->get_mimetype(); - $newrecord->userid = $file->get_userid(); - - if (!$newfile = $this->create_file_from_storedfile($newrecord, $draftfileid)) { - return false; - } - - $file->delete(); - return $newfile; - } - /** * Cron cleanup job. */ diff --git a/lib/formslib.php b/lib/formslib.php index 8418293c4c..e5212ce61b 100644 --- a/lib/formslib.php +++ b/lib/formslib.php @@ -540,44 +540,89 @@ class moodleform { /** * Save file to local filesystem pool * @param string $elname name of element - * @param int $contextid - * @param string $filearea - * @param string $filepath - * @param string $filename - use specified filename, if not specified name of uploaded file used + * @param int $newcontextid + * @param string $newfilearea + * @param string $newfilepath + * @param string $newfilename - use specified filename, if not specified name of uploaded file used * @param bool $override override file if exists - * @param int $userid + * @param int $newuserid - new userid if required * @return mixed stored_file object or false if error; may throw exception if duplicate found */ - function save_stored_file($elname, $contextid, $filearea, $itemid, $filepath, $filename=null, $override=false, $userid=null) { + function save_stored_file($elname, $newcontextid, $newfilearea, $newitemid, $newfilepath, + $newfilename=null, $override=false, $newuserid=null) { + + global $USER; + if (!$this->is_submitted() or !$this->is_validated()) { return false; } - if (!isset($_FILES[$elname])) { - return false; + if (empty($newuserid)) { + $newuserid = $USER->id; } - $filename = is_null($filename) ? $_FILES[$elname]['name'] : $filename; + if (isset($_FILES[$elname])) { + $filename = is_null($newfilename) ? $_FILES[$elname]['name'] : $newfilename; - $fs = get_file_storage(); + $fs = get_file_storage(); - if ($file = $fs->get_file($contextid, $filearea, $itemid, $filepath, $filename)) { - if ($override) { - $file->delete(); - } else { + if ($file = $fs->get_file($newcontextid, $newfilearea, $newitemid, $newfilepath, $newfilename)) { + if ($override) { + $file->delete(); + } else { + return false; + } + } + + $file_record = new object(); + $file_record->contextid = $newcontextid; + $file_record->filearea = $newfilearea; + $file_record->itemid = $newitemid; + $file_record->filepath = $newfilepath; + $file_record->filename = $newfilename; + $file_record->userid = $newuserid; + + return $fs->create_file_from_pathname($file_record, $_FILES[$elname]['tmp_name']); + + } else if (isset($this->exportValues[$elname])) { // Submitted data contains itemid in user's draft_area + + $itemid = $this->exportValues[$elname]; + + if (!$context = get_context_instance(CONTEXT_USER, $USER->id)) { return false; } - } - $file_record = new object(); - $file_record->contextid = $contextid; - $file_record->filearea = $filearea; - $file_record->itemid = $itemid; - $file_record->filepath = $filepath; - $file_record->filename = $filename; - $file_record->userid = $userid; + if (!$files = get_area_files($context->id, 'user_draft', $itemid, 'itemid, filepath, filename', false)) { + return false; + } + + $file = array_pop($files); // Get the one and only item out of the array + + $params = $file->get_params(); + + $fs = get_file_storage(); + + $newrecord = new object(); + $newrecord->contextid = $newcontextid; + $newrecord->filearea = $newfilearea; + $newrecord->itemid = $newitemid; + $newrecord->filepath = $newfilepath; + $newrecord->filename = ($newfilename ? $newfilename : $params['filename']); + + $newrecord->timecreated = $file->get_timecreated(); + $newrecord->timemodified = $file->get_timemodified(); + $newrecord->mimetype = $file->get_mimetype(); + $newrecord->userid = $file->get_userid(); - return $fs->create_file_from_pathname($file_record, $_FILES[$elname]['tmp_name']); + if (!$newfile = $this->create_file_from_storedfile($newrecord, $file->get_id)) { + return false; + } + + $file->delete(); + return $newfile; + } + + return false; } /**