MDL-21432 backup - allow restore of only one itemid (instead of the whole itemname)
authorEloy Lafuente <stronk7@moodle.org>
Fri, 6 Aug 2010 16:08:29 +0000 (16:08 +0000)
committerEloy Lafuente <stronk7@moodle.org>
Fri, 6 Aug 2010 16:08:29 +0000 (16:08 +0000)
backup/moodle2/restore_subplugin.class.php
backup/util/dbops/restore_dbops.class.php
backup/util/plan/restore_structure_step.class.php

index 43eb56a..a5c8e45 100644 (file)
@@ -26,6 +26,7 @@
  * Class implementing the subplugins support for moodle2 restore
  *
  * TODO: Finish phpdocs
  * Class implementing the subplugins support for moodle2 restore
  *
  * TODO: Finish phpdocs
+ * TODO: Add support for declaring decode_contents (not decode_rules)
  */
 abstract class restore_subplugin {
 
  */
 abstract class restore_subplugin {
 
@@ -119,8 +120,8 @@ abstract class restore_subplugin {
     /**
      * Add all the existing file, given their component and filearea and one backup_ids itemname to match with
      */
     /**
      * Add all the existing file, given their component and filearea and one backup_ids itemname to match with
      */
-    protected function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null) {
-        $this->step->add_related_files($component, $filearea, $mappingitemname, $filesctxid);
+    protected function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null, $olditemid = null) {
+        $this->step->add_related_files($component, $filearea, $mappingitemname, $filesctxid, $olditemid);
     }
 
     /**
     }
 
     /**
index 286960b..483c692 100644 (file)
@@ -238,7 +238,7 @@ abstract class restore_dbops {
      * optionally one source itemname to match itemids
      * put the corresponding files in the pool
      */
      * 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, $dfltuserid, $itemname = null) {
+    public static function send_files_to_pool($basepath, $restoreid, $component, $filearea, $oldcontextid, $dfltuserid, $itemname = null, $olditemid = null) {
         global $DB;
 
         // Get new context, must exist or this will fail
         global $DB;
 
         // Get new context, must exist or this will fail
@@ -273,6 +273,10 @@ abstract class restore_dbops {
                        AND f.filearea = ?
                        AND i.itemname = ?';
             $params = array($restoreid, $oldcontextid, $component, $filearea, $itemname);
                        AND f.filearea = ?
                        AND i.itemname = ?';
             $params = array($restoreid, $oldcontextid, $component, $filearea, $itemname);
+            if ($olditemid !== null) { // Just process ONE olditemid intead of the whole itemname
+                $sql .= ' AND i.itemid = ?';
+                $params[] = $olditemid;
+            }
         }
 
         $fs = get_file_storage();         // Get moodle file storage
         }
 
         $fs = get_file_storage();         // Get moodle file storage
index 31ae2f4..22688f6 100644 (file)
@@ -182,10 +182,10 @@ abstract class restore_structure_step extends restore_step {
     /**
      * Add all the existing file, given their component and filearea and one backup_ids itemname to match with
      */
     /**
      * Add all the existing file, given their component and filearea and one backup_ids itemname to match with
      */
-    public function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null) {
+    public function add_related_files($component, $filearea, $mappingitemname, $filesctxid = null, $olditemid = null) {
         $filesctxid = is_null($filesctxid) ? $this->task->get_old_contextid() : $filesctxid;
         restore_dbops::send_files_to_pool($this->get_basepath(), $this->get_restoreid(), $component,
         $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, $this->task->get_userid(), $mappingitemname);
+                                          $filearea, $filesctxid, $this->task->get_userid(), $mappingitemname, $olditemid);
     }
 
     /**
     }
 
     /**