]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15405: first draft - function to move a file from user_draft to the good filearea...
authorscyrma <scyrma>
Mon, 1 Sep 2008 10:33:20 +0000 (10:33 +0000)
committerscyrma <scyrma>
Mon, 1 Sep 2008 10:33:20 +0000 (10:33 +0000)
lib/filelib.php

index e178f273046426701c6eb016b5d810e3c197b227..4c4a739019259a33c649b83cc356caf4c5fa3bc1 100644 (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.