}
}
+ /**
+ * 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
}
+ /**
+ * 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
*
* 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();
}