original_string: protected function launch_after_execute_methods() {
          $alreadylaunched = array(); // To avoid multiple executions
          foreach ($this->pathelements as $key => $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_execute methods, use it
              if (method_exists($pobject, 'launch_after_execute_methods')) {
                  $pobject->launch_after_execute_methods();
              }
          }
          // Finally execute own (restore_structure_step) after_execute method
          $this->after_execute();
  
      }
code: protected function launch_after_execute_methods() {
          $alreadylaunched = array(); // To avoid multiple executions
          foreach ($this->pathelements as $key => $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_execute methods, use it
              if (method_exists($pobject, 'launch_after_execute_methods')) {
                  $pobject->launch_after_execute_methods();
              }
          }
          // Finally execute own (restore_structure_step) after_execute method
          $this->after_execute();
  
      }
code_tokens: protected function launch_after_execute_methods ( ) { $ alreadylaunched = array ( ) ; // To avoid multiple executions foreach ( $ this -> pathelements as $ key => $ 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_execute methods, use it if ( method_exists ( $ pobject , 'launch_after_execute_methods' ) ) { $ pobject -> launch_after_execute_methods ( ) ; } } // Finally execute own (restore_structure_step) after_execute method $ this -> after_execute ( ) ; }
docstring: Launch all the after_execute methods present in all the processing objects
  
  This method will launch all the after_execute methods that can be defined
  both in restore_plugin and restore_structure_step classes
  
  For restore_plugin classes the name of the method to be executed will be
  "after_execute_" + connection point (as far as can be multiple connection
  points in the same class)
  
  For restore_structure_step classes is will be, simply, "after_execute". Note
  that this is executed *after* the plugin ones
docstring_tokens: Launch all the after_execute methods present in all the processing objects