Browse files

Merge branch 'MDL-27636_20stable' of git://github.com/stronk7/moodle …

…into MOODLE_20_STABLE
  • Loading branch information...
2 parents 72ca02b + 92480bc commit 2e8ab7269c33a3900266317e5202713dd67fb8bf Sam Hemelryk committed May 30, 2011
View
17 backup/moodle2/restore_plugin.class.php
@@ -81,6 +81,23 @@ public function launch_after_execute_methods() {
}
/**
+ * after_restore dispatcher for any restore_plugin class
+ *
+ * This method will dispatch execution to the corresponding
+ * after_restore_xxx() method when available, with xxx
+ * being the connection point of the instance, so plugin
+ * classes with multiple connection points will support
+ * multiple after_restore methods, one for each connection point
+ */
+ public function launch_after_restore_methods() {
+ // Check if the after_restore method exists and launch it
+ $afterrestore = 'after_restore_' . basename($this->connectionpoint->get_path());
+ if (method_exists($this, $afterrestore)) {
+ $this->$afterrestore();
+ }
+ }
+
+ /**
* Returns one array with all the decode contents
* to be processed by the links decoder
*
View
37 backup/util/plan/restore_structure_step.class.php
@@ -361,6 +361,43 @@ protected function launch_after_execute_methods() {
}
/**
+ * Launch all the after_restore methods present in all the processing objects
+ *
+ * This method will launch all the after_restore methods that can be defined
+ * both in restore_plugin class
+ *
+ * For restore_plugin classes the name of the method to be executed will be
+ * "after_restore_" + connection point (as far as can be multiple connection
+ * points in the same class)
+ */
+ public function launch_after_restore_methods() {
+ $alreadylaunched = array(); // To avoid multiple executions
+ foreach ($this->pathelements as $pathelement) {
+ // Get the processing object
+ $pobject = $pathelement->get_processing_object();
+ // Skip null processors (child of grouped ones for sure)
+ if (is_null($pobject)) {
+ continue;
+ }
+ // Skip restore structure step processors (this)
+ if ($pobject instanceof restore_structure_step) {
+ continue;
+ }
+ // Skip already launched processing objects
+ if (in_array($pobject, $alreadylaunched, true)) {
+ continue;
+ }
+ // Add processing object to array of launched ones
+ $alreadylaunched[] = $pobject;
+ // If the processing object has support for
+ // launching after_restore methods, use it
+ if (method_exists($pobject, 'launch_after_restore_methods')) {
+ $pobject->launch_after_restore_methods();
+ }
+ }
+ }
+
+ /**
* This method will be executed after the whole structure step have been processed
*
* After execution method for code needed to be executed after the whole structure
View
7 backup/util/plan/restore_task.class.php
@@ -100,6 +100,13 @@ public function get_old_system_contextid() {
* method if available
*/
public function execute_after_restore() {
+ if ($this->executed) {
+ foreach ($this->steps as $step) {
+ if (method_exists($step, 'launch_after_restore_methods')) {
+ $step->launch_after_restore_methods();
+ }
+ }
+ }
if ($this->executed && method_exists($this, 'after_restore')) {
$this->after_restore();
}

0 comments on commit 2e8ab72

Please sign in to comment.