original_string: protected function add_plugin_structure($plugintype, $element) {
  
          global $CFG;
  
          // Check the requested plugintype is a valid one
          if (!array_key_exists($plugintype, core_component::get_plugin_types($plugintype))) {
               throw new restore_step_exception('incorrect_plugin_type', $plugintype);
          }
  
          // Get all the restore path elements, looking across all the plugin dirs
          $pluginsdirs = core_component::get_plugin_list($plugintype);
          foreach ($pluginsdirs as $name => $pluginsdir) {
              // We need to add also backup plugin classes on restore, they may contain
              // some stuff used both in backup & restore
              $backupclassname = 'backup_' . $plugintype . '_' . $name . '_plugin';
              $backupfile = $pluginsdir . '/backup/moodle2/' . $backupclassname . '.class.php';
              if (file_exists($backupfile)) {
                  require_once($backupfile);
              }
              // Now add restore plugin classes and prepare stuff
              $restoreclassname = 'restore_' . $plugintype . '_' . $name . '_plugin';
              $restorefile = $pluginsdir . '/backup/moodle2/' . $restoreclassname . '.class.php';
              if (file_exists($restorefile)) {
                  require_once($restorefile);
                  $restoreplugin = new $restoreclassname($plugintype, $name, $this);
                  // Add plugin paths to the step
                  $this->prepare_pathelements($restoreplugin->define_plugin_structure($element));
              }
          }
      }
code: protected function add_plugin_structure($plugintype, $element) {
  
          global $CFG;
  
          // Check the requested plugintype is a valid one
          if (!array_key_exists($plugintype, core_component::get_plugin_types($plugintype))) {
               throw new restore_step_exception('incorrect_plugin_type', $plugintype);
          }
  
          // Get all the restore path elements, looking across all the plugin dirs
          $pluginsdirs = core_component::get_plugin_list($plugintype);
          foreach ($pluginsdirs as $name => $pluginsdir) {
              // We need to add also backup plugin classes on restore, they may contain
              // some stuff used both in backup & restore
              $backupclassname = 'backup_' . $plugintype . '_' . $name . '_plugin';
              $backupfile = $pluginsdir . '/backup/moodle2/' . $backupclassname . '.class.php';
              if (file_exists($backupfile)) {
                  require_once($backupfile);
              }
              // Now add restore plugin classes and prepare stuff
              $restoreclassname = 'restore_' . $plugintype . '_' . $name . '_plugin';
              $restorefile = $pluginsdir . '/backup/moodle2/' . $restoreclassname . '.class.php';
              if (file_exists($restorefile)) {
                  require_once($restorefile);
                  $restoreplugin = new $restoreclassname($plugintype, $name, $this);
                  // Add plugin paths to the step
                  $this->prepare_pathelements($restoreplugin->define_plugin_structure($element));
              }
          }
      }
code_tokens: protected function add_plugin_structure ( $ plugintype , $ element ) { global $ CFG ; // Check the requested plugintype is a valid one if ( ! array_key_exists ( $ plugintype , core_component :: get_plugin_types ( $ plugintype ) ) ) { throw new restore_step_exception ( 'incorrect_plugin_type' , $ plugintype ) ; } // Get all the restore path elements, looking across all the plugin dirs $ pluginsdirs = core_component :: get_plugin_list ( $ plugintype ) ; foreach ( $ pluginsdirs as $ name => $ pluginsdir ) { // We need to add also backup plugin classes on restore, they may contain // some stuff used both in backup & restore $ backupclassname = 'backup_' . $ plugintype . '_' . $ name . '_plugin' ; $ backupfile = $ pluginsdir . '/backup/moodle2/' . $ backupclassname . '.class.php' ; if ( file_exists ( $ backupfile ) ) { require_once ( $ backupfile ) ; } // Now add restore plugin classes and prepare stuff $ restoreclassname = 'restore_' . $ plugintype . '_' . $ name . '_plugin' ; $ restorefile = $ pluginsdir . '/backup/moodle2/' . $ restoreclassname . '.class.php' ; if ( file_exists ( $ restorefile ) ) { require_once ( $ restorefile ) ; $ restoreplugin = new $ restoreclassname ( $ plugintype , $ name , $ this ) ; // Add plugin paths to the step $ this -> prepare_pathelements ( $ restoreplugin -> define_plugin_structure ( $ element ) ) ; } } }
docstring: Add plugin structure to any element in the structure restore tree
  
  @param string $plugintype type of plugin as defined by core_component::get_plugin_types()
  @param restore_path_element $element element in the structure restore tree that
  we are going to add plugin information to
docstring_tokens: Add plugin structure to any element in the structure restore tree