MDL-23362 backup - on restore detect missing modules / skipped activities, for gradebook.
authorEloy Lafuente <stronk7@moodle.org>
Tue, 14 Sep 2010 22:59:43 +0000 (22:59 +0000)
committerEloy Lafuente <stronk7@moodle.org>
Tue, 14 Sep 2010 22:59:43 +0000 (22:59 +0000)
backup/moodle2/backup_stepslib.php
backup/moodle2/restore_activity_task.class.php
backup/moodle2/restore_plan_builder.class.php
backup/moodle2/restore_stepslib.php
backup/util/plan/restore_plan.class.php
backup/util/plan/restore_task.class.php

index 17b2b3b..4d24a91 100644 (file)
@@ -689,7 +689,7 @@ class backup_gradebook_structure_step extends backup_structure_step {
         // Define sources
 
         //Include manual, category and the course grade item
-        $grade_items_sql ="SELECT * FROM {grade_items} 
+        $grade_items_sql ="SELECT * FROM {grade_items}
                            WHERE courseid = :courseid
                            AND (itemtype='manual' OR itemtype='course' OR itemtype='category')";
         $grade_items_params = array('courseid'=>backup::VAR_COURSEID);
index 8a414c2..76e6c3b 100644 (file)
@@ -164,6 +164,7 @@ abstract class restore_activity_task extends restore_task {
         // Find activity_included_setting
         if (!$this->get_setting_value('included')) {
             $this->log('activity skipped by _included setting', backup::LOG_DEBUG, $this->name);
+            $this->plan->set_excluding_activities(); // Inform plan we are excluding actvities
 
         } else { // Setting tells us it's ok to execute
             parent::execute();
index 9ad332a..3f09689 100644 (file)
@@ -124,7 +124,10 @@ abstract class restore_plan_builder {
                     // TODO: Debug information about block not supported
                 }
             }
+        } else { // Activity is missing in target site, inform plan about that
+            $plan->set_missing_modules();
         }
+
     }
 
     /**
index f7061bb..648b9cd 100644 (file)
@@ -87,6 +87,17 @@ class restore_gradebook_step extends restore_structure_step {
             return false;
         }
 
+        // Some module present in backup file isn't available to restore
+        // in this site, don't execute
+        if ($this->task->is_missing_modules()) {
+            return false;
+        }
+
+        // Some activity has been excluded to be restored, don't execute
+        if ($this->task->is_excluding_activities()) {
+            return false;
+        }
+
         // Arrived here, execute the step
         return true;
      }
index 711ca3e..355c4a3 100644 (file)
@@ -37,6 +37,8 @@ class restore_plan extends base_plan implements loggable {
     protected $basepath;   // Fullpath to dir where backup is available
     protected $preloaded;  // When executing the plan, do we have preloaded (from checks) info
     protected $decoder;    // restore_decode_processor in charge of decoding all the interlinks
+    protected $missingmodules; // to flag if restore has detected some missing module
+    protected $excludingdactivities; // to flag if restore settings are excluding any activity
 
     /**
      * Constructor - instantiates one object of this class
@@ -51,6 +53,9 @@ class restore_plan extends base_plan implements loggable {
         $this->basepath   = $CFG->dataroot . '/temp/backup/' . $controller->get_tempdir();
         $this->preloaded  = false;
         $this->decoder    = new restore_decode_processor($this->get_restoreid(), $this->get_info()->original_wwwroot, $CFG->wwwroot);
+        $this->missingmodules = false;
+        $this->excludingdactivities = false;
+
         parent::__construct('restore_plan');
     }
 
@@ -96,6 +101,14 @@ class restore_plan extends base_plan implements loggable {
         return $this->controller->is_samesite();
     }
 
+    public function is_missing_modules() {
+        return $this->missingmodules;
+    }
+
+    public function is_excluding_activities() {
+        return $this->excludingdactivities;
+    }
+
     public function set_preloaded_information() {
         $this->preloaded = true;
     }
@@ -108,6 +121,14 @@ class restore_plan extends base_plan implements loggable {
         return $this->controller->get_tempdir();
     }
 
+    public function set_missing_modules() {
+        $this->missingmodules = true;
+    }
+
+    public function set_excluding_activities() {
+        $this->excludingdactivities = true;
+    }
+
     public function log($message, $level, $a = null, $depth = null, $display = false) {
         backup_helper::log($message, $level, $a, $depth, $display, $this->get_logger());
     }
index 108b222..11beb74 100644 (file)
@@ -63,6 +63,14 @@ abstract class restore_task extends base_task {
         return $this->plan->is_samesite();
     }
 
+    public function is_missing_modules() {
+        return $this->plan->is_missing_modules();
+    }
+
+    public function is_excluding_activities() {
+        return $this->plan->is_excluding_activities();
+    }
+
     public function set_preloaded_information() {
         $this->plan->set_preloaded_information();
     }