MDL-21432 backup - improve restore of files (user and sortorder)
authorEloy Lafuente <stronk7@moodle.org>
Wed, 28 Jul 2010 15:52:09 +0000 (15:52 +0000)
committerEloy Lafuente <stronk7@moodle.org>
Wed, 28 Jul 2010 15:52:09 +0000 (15:52 +0000)
backup/util/dbops/restore_dbops.class.php
backup/util/plan/restore_structure_step.class.php

index 12d652a..eb01734 100644 (file)
@@ -238,7 +238,7 @@ abstract class restore_dbops {
      * optionally one source itemname to match itemids
      * put the corresponding files in the pool
      */
-    public static function send_files_to_pool($basepath, $restoreid, $component, $filearea, $oldcontextid, $itemname = null) {
+    public static function send_files_to_pool($basepath, $restoreid, $component, $filearea, $oldcontextid, $dfltuserid, $itemname = null) {
         global $DB;
 
         // Get new context, must exist or this will fail
@@ -284,9 +284,12 @@ abstract class restore_dbops {
             if ($file->filepath == '/' && $file->filename == '.') {
                 continue;
             }
+            // set the best possible user
+            $mappeduser = self::get_backup_ids_record($restoreid, 'user', $file->userid);
+            $file->userid = !empty($mappeduser) ? $mappeduser->newitemid : $dfltuserid;
             // dir found (and not root one), let's create if
             if ($file->filename == '.') {
-                $fs->create_directory($newcontextid, $component, $filearea, $rec->newitemid, $file->filepath);
+                $fs->create_directory($newcontextid, $component, $filearea, $rec->newitemid, $file->filepath, $file->userid);
                 continue;
             }
             // arrived here, file found
@@ -305,8 +308,10 @@ abstract class restore_dbops {
                     'filename'    => $file->filename,
                     'timecreated' => $file->timecreated,
                     'timemodified'=> $file->timemodified,
+                    'userid'      => $file->userid,
                     'author'      => $file->author,
-                    'license'     => $file->license);
+                    'license'     => $file->license,
+                    'sortorder'   => $file->sortorder);
                 $fs->create_file_from_pathname($file_record, $backuppath);
             }
         }
index 1eb1d80..8364b70 100644 (file)
@@ -267,7 +267,7 @@ abstract class restore_structure_step extends restore_step {
     protected function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null) {
         $filesctxid = is_null($filesctxid) ? $this->task->get_old_contextid() : $filesctxid;
         restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component,
-                                          $filearea, $filesctxid, $mappingitemname);
+                                          $filearea, $filesctxid, $this->task->get_userid(), $mappingitemname);
     }
 
     /**