MDL-23478 backup - change in block positions structure. Break BC, so up minversion
authorEloy Lafuente <stronk7@moodle.org>
Sat, 24 Jul 2010 00:15:59 +0000 (00:15 +0000)
committerEloy Lafuente <stronk7@moodle.org>
Sat, 24 Jul 2010 00:15:59 +0000 (00:15 +0000)
backup/backup.class.php
backup/moodle2/backup_block_task.class.php
backup/moodle2/backup_stepslib.php
backup/util/helper/restore_prechecks_helper.class.php
backup/util/plan/backup_structure_step.class.php
backup/util/plan/restore_structure_step.class.php

index 2905c82..ba7bce8 100644 (file)
@@ -106,7 +106,7 @@ abstract class backup implements checksumable {
     const OPERATION_RESTORE ='restore';// We are performing one restore
 
     // Version (to keep CFG->backup_version (and release) updated automatically)
-    const VERSION = 2010072000;
+    const VERSION = 2010072300;
     const RELEASE = '2.0 Preview 5';
 }
 
index d520869..61f346e 100644 (file)
@@ -151,7 +151,7 @@ abstract class backup_block_task extends backup_task {
         $this->add_step(new backup_block_instance_structure_step('block_commons', 'block.xml'));
 
         // Here we add all the common steps for any block and, in the point of interest
-        // we call to define_my_steps() is order to get the particular ones inserted in place.
+        // we call to define_my_steps() in order to get the particular ones inserted in place.
         $this->define_my_steps();
 
         // Generate the roles file (optionally role assignments and always role overrides)
index 3248de5..324d824 100644 (file)
@@ -1020,13 +1020,16 @@ class backup_block_instance_structure_step extends backup_structure_step {
             'blockname', 'parentcontextid', 'showinsubcontexts', 'pagetypepattern',
             'subpagepattern', 'defaultregion', 'defaultweight', 'configdata'));
 
-        $positions = new backup_nested_element('block_positions', null, array(
+        $positions = new backup_nested_element('block_positions');
+
+        $position = new backup_nested_element('block_position', array('id'), array(
             'contextid', 'pagetype', 'subpage', 'visible',
             'region', 'weight'));
 
         // Build the tree
 
         $block->add_child($positions);
+        $positions->add_child($position);
 
         // Transform configdata information if needed (process links and friends)
         $blockrec = $DB->get_record('block_instances', array('id' => $this->task->get_blockid()));
@@ -1047,7 +1050,7 @@ class backup_block_instance_structure_step extends backup_structure_step {
 
         $block->set_source_array(array($blockrec));
 
-        $positions->set_source_table('block_positions', array('blockinstanceid' => backup::VAR_PARENTID));
+        $position->set_source_table('block_positions', array('blockinstanceid' => backup::VAR_PARENTID));
 
         // File anotations (for fileareas specified on each block)
         foreach ($this->task->get_fileareas() as $filearea) {
index f1090c5..6361cd2 100644 (file)
@@ -63,7 +63,7 @@ abstract class restore_prechecks_helper {
         restore_controller_dbops::create_restore_temp_tables($controller->get_restoreid());
 
         // Check we are restoring one backup >= $min20version (very first ok ever)
-        $min20version = 2010072000;
+        $min20version = 2010072300;
         if ($controller->get_info()->backup_version < $min20version) {
             $message = new stdclass();
             $message->backup = $controller->get_info()->backup_version;
index f07a248..63fca5c 100644 (file)
@@ -43,6 +43,7 @@ abstract class backup_structure_step extends backup_step {
             throw new backup_step_exception('wrong_backup_task_specified');
         }
         $this->filename = $filename;
+        $this->contenttransformer = null;
         parent::__construct($name, $task);
     }
 
index bbd4d58..8545f07 100644 (file)
 abstract class restore_structure_step extends restore_step {
 
     protected $filename; // Name of the file to be parsed
-    protected $pathelements; // Array of pathelements to process
+    protected $contentprocessor; // xml parser processor being used
+                                 // (need it here, apart from parser
+                                 // thanks to serialized data to process -
+                                 // say thanks to blocks!)
+    protected $pathelements;  // Array of pathelements to process
     protected $elementsoldid; // Array to store last oldid used on each element
     protected $elementsnewid; // Array to store last newid used on each element
 
@@ -42,6 +46,7 @@ abstract class restore_structure_step extends restore_step {
             throw new restore_step_exception('wrong_restore_task_specified');
         }
         $this->filename = $filename;
+        $this->contentprocessor = null;
         $this->pathelements = array();
         $this->elementsoldid = array();
         $this->elementsnewid = array();
@@ -82,6 +87,9 @@ abstract class restore_structure_step extends restore_step {
         $xmlparser = new progressive_parser();
         $xmlparser->set_file($fullpath);
         $xmlprocessor = new restore_structure_parser_processor($this->task->get_courseid(), $this);
+        $this->contentprocessor = $xmlprocessor; // Save the reference to the contentprocessor
+                                                 // as far as we are going to need it out
+                                                 // from parser (blame serialized data!)
         $xmlparser->set_processor($xmlprocessor);
 
         // Add pathelements to processor