original_string: public static function resolve_plugininfo_class($type) {
          $plugintypes = core_component::get_plugin_types();
          if (!isset($plugintypes[$type])) {
              return '\core\plugininfo\orphaned';
          }
  
          $parent = core_component::get_subtype_parent($type);
  
          if ($parent) {
              $class = '\\'.$parent.'\plugininfo\\' . $type;
              if (class_exists($class)) {
                  $plugintypeclass = $class;
              } else {
                  if ($dir = core_component::get_component_directory($parent)) {
                      // BC only - use namespace instead!
                      if (file_exists("$dir/adminlib.php")) {
                          global $CFG;
                          include_once("$dir/adminlib.php");
                      }
                      if (class_exists('plugininfo_' . $type)) {
                          $plugintypeclass = 'plugininfo_' . $type;
                          debugging('Class "'.$plugintypeclass.'" is deprecated, migrate to "'.$class.'"', DEBUG_DEVELOPER);
                      } else {
                          debugging('Subplugin type "'.$type.'" should define class "'.$class.'"', DEBUG_DEVELOPER);
                          $plugintypeclass = '\core\plugininfo\general';
                      }
                  } else {
                      $plugintypeclass = '\core\plugininfo\general';
                  }
              }
          } else {
              $class = '\core\plugininfo\\' . $type;
              if (class_exists($class)) {
                  $plugintypeclass = $class;
              } else {
                  debugging('All standard types including "'.$type.'" should have plugininfo class!', DEBUG_DEVELOPER);
                  $plugintypeclass = '\core\plugininfo\general';
              }
          }
  
          if (!in_array('core\plugininfo\base', class_parents($plugintypeclass))) {
              throw new coding_exception('Class ' . $plugintypeclass . ' must extend \core\plugininfo\base');
          }
  
          return $plugintypeclass;
      }
code: public static function resolve_plugininfo_class($type) {
          $plugintypes = core_component::get_plugin_types();
          if (!isset($plugintypes[$type])) {
              return '\core\plugininfo\orphaned';
          }
  
          $parent = core_component::get_subtype_parent($type);
  
          if ($parent) {
              $class = '\\'.$parent.'\plugininfo\\' . $type;
              if (class_exists($class)) {
                  $plugintypeclass = $class;
              } else {
                  if ($dir = core_component::get_component_directory($parent)) {
                      // BC only - use namespace instead!
                      if (file_exists("$dir/adminlib.php")) {
                          global $CFG;
                          include_once("$dir/adminlib.php");
                      }
                      if (class_exists('plugininfo_' . $type)) {
                          $plugintypeclass = 'plugininfo_' . $type;
                          debugging('Class "'.$plugintypeclass.'" is deprecated, migrate to "'.$class.'"', DEBUG_DEVELOPER);
                      } else {
                          debugging('Subplugin type "'.$type.'" should define class "'.$class.'"', DEBUG_DEVELOPER);
                          $plugintypeclass = '\core\plugininfo\general';
                      }
                  } else {
                      $plugintypeclass = '\core\plugininfo\general';
                  }
              }
          } else {
              $class = '\core\plugininfo\\' . $type;
              if (class_exists($class)) {
                  $plugintypeclass = $class;
              } else {
                  debugging('All standard types including "'.$type.'" should have plugininfo class!', DEBUG_DEVELOPER);
                  $plugintypeclass = '\core\plugininfo\general';
              }
          }
  
          if (!in_array('core\plugininfo\base', class_parents($plugintypeclass))) {
              throw new coding_exception('Class ' . $plugintypeclass . ' must extend \core\plugininfo\base');
          }
  
          return $plugintypeclass;
      }
code_tokens: public static function resolve_plugininfo_class ( $ type ) { $ plugintypes = core_component :: get_plugin_types ( ) ; if ( ! isset ( $ plugintypes [ $ type ] ) ) { return '\core\plugininfo\orphaned' ; } $ parent = core_component :: get_subtype_parent ( $ type ) ; if ( $ parent ) { $ class = '\\' . $ parent . '\plugininfo\\' . $ type ; if ( class_exists ( $ class ) ) { $ plugintypeclass = $ class ; } else { if ( $ dir = core_component :: get_component_directory ( $ parent ) ) { // BC only - use namespace instead! if ( file_exists ( "$dir/adminlib.php" ) ) { global $ CFG ; include_once ( "$dir/adminlib.php" ) ; } if ( class_exists ( 'plugininfo_' . $ type ) ) { $ plugintypeclass = 'plugininfo_' . $ type ; debugging ( 'Class "' . $ plugintypeclass . '" is deprecated, migrate to "' . $ class . '"' , DEBUG_DEVELOPER ) ; } else { debugging ( 'Subplugin type "' . $ type . '" should define class "' . $ class . '"' , DEBUG_DEVELOPER ) ; $ plugintypeclass = '\core\plugininfo\general' ; } } else { $ plugintypeclass = '\core\plugininfo\general' ; } } } else { $ class = '\core\plugininfo\\' . $ type ; if ( class_exists ( $ class ) ) { $ plugintypeclass = $ class ; } else { debugging ( 'All standard types including "' . $ type . '" should have plugininfo class!' , DEBUG_DEVELOPER ) ; $ plugintypeclass = '\core\plugininfo\general' ; } } if ( ! in_array ( 'core\plugininfo\base' , class_parents ( $ plugintypeclass ) ) ) { throw new coding_exception ( 'Class ' . $ plugintypeclass . ' must extend \core\plugininfo\base' ) ; } return $ plugintypeclass ; }
docstring: Find the plugin info class for given type.
  
  @param string $type
  @return string name of pluginfo class for give plugin type
docstring_tokens: Find the plugin info class for given type .