MDL-24419 (1): Core restore steps should have after_restore function
authorsam marshall <s.marshall@open.ac.uk>
Mon, 2 Apr 2012 11:04:33 +0000 (12:04 +0100)
committersam marshall <s.marshall@open.ac.uk>
Mon, 14 May 2012 10:15:14 +0000 (11:15 +0100)
At present core restore steps cannot have an after_restore function,
even though plugin restore steps can. Technically it would be possible
to just override the launch_after_restore_methods function but this
is not very neat. Instead, I added code to call after_restore function
(exactly the same way after_execute works).

backup/util/plan/restore_structure_step.class.php

index ddb2fe5..4b0ff58 100644 (file)
@@ -395,6 +395,8 @@ abstract class restore_structure_step extends restore_step {
                 $pobject->launch_after_restore_methods();
             }
         }
                 $pobject->launch_after_restore_methods();
             }
         }
+        // Finally execute own (restore_structure_step) after_restore method
+        $this->after_restore();
     }
 
     /**
     }
 
     /**
@@ -408,6 +410,16 @@ abstract class restore_structure_step extends restore_step {
         // do nothing by default
     }
 
         // do nothing by default
     }
 
+    /**
+     * This method will be executed after the rest of the restore has been processed.
+     *
+     * Use if you need to update IDs based on things which are restored after this
+     * step has completed.
+     */
+    protected function after_restore() {
+        // do nothing by default
+    }
+
     /**
      * Prepare the pathelements for processing, looking for duplicates, applying
      * processing objects and other adjustments
     /**
      * Prepare the pathelements for processing, looking for duplicates, applying
      * processing objects and other adjustments