original_string: protected function standard_renderer_classnames($component, $subtype = null) {
          global $CFG; // Needed in included files.
          $classnames = array();
  
          // Standardize component name ala frankenstyle.
          list($plugin, $type) = core_component::normalize_component($component);
          if ($type === null) {
              $component = $plugin;
          } else {
              $component = $plugin.'_'.$type;
          }
  
          if ($component !== 'core') {
              // Renderers are stored in renderer.php files.
              if (!$compdirectory = core_component::get_component_directory($component)) {
                  throw new coding_exception('Invalid component specified in renderer request', $component);
              }
              $rendererfile = $compdirectory . '/renderer.php';
              if (file_exists($rendererfile)) {
                  include_once($rendererfile);
              }
  
          } else if (!empty($subtype)) {
              $coresubsystems = core_component::get_core_subsystems();
              if (!array_key_exists($subtype, $coresubsystems)) { // There may be nulls.
                  throw new coding_exception('Invalid core subtype "' . $subtype . '" in renderer request', $subtype);
              }
              if ($coresubsystems[$subtype]) {
                  $rendererfile = $coresubsystems[$subtype] . '/renderer.php';
                  if (file_exists($rendererfile)) {
                      include_once($rendererfile);
                  }
              }
          }
  
          if (empty($subtype)) {
              // Theme specific auto-loaded name (only valid when prefixed with the theme name).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '_renderer'
              );
  
              // Standard autoloaded plugin name (not valid with a prefix).
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\renderer'
              );
              // Legacy class name - (valid with or without a prefix).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => true,
                  'autoloaded' => false,
                  'classname' => $component . '_renderer'
              );
          } else {
              // Theme specific auto-loaded name (only valid when prefixed with the theme name).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '\\' . $subtype . '_renderer'
              );
              // Version of the above with subtype being a namespace level on it's own.
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '\\' . $subtype . '\\renderer'
              );
              // Standard autoloaded plugin name (not valid with a prefix).
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\' . $subtype . '_renderer'
              );
              // Version of the above with subtype being a namespace level on it's own.
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\' . $subtype . '\\renderer'
              );
              // Legacy class name - (valid with or without a prefix).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => true,
                  'autoloaded' => false,
                  'classname' => $component . '_' . $subtype . '_renderer'
              );
          }
          return $classnames;
      }
code: protected function standard_renderer_classnames($component, $subtype = null) {
          global $CFG; // Needed in included files.
          $classnames = array();
  
          // Standardize component name ala frankenstyle.
          list($plugin, $type) = core_component::normalize_component($component);
          if ($type === null) {
              $component = $plugin;
          } else {
              $component = $plugin.'_'.$type;
          }
  
          if ($component !== 'core') {
              // Renderers are stored in renderer.php files.
              if (!$compdirectory = core_component::get_component_directory($component)) {
                  throw new coding_exception('Invalid component specified in renderer request', $component);
              }
              $rendererfile = $compdirectory . '/renderer.php';
              if (file_exists($rendererfile)) {
                  include_once($rendererfile);
              }
  
          } else if (!empty($subtype)) {
              $coresubsystems = core_component::get_core_subsystems();
              if (!array_key_exists($subtype, $coresubsystems)) { // There may be nulls.
                  throw new coding_exception('Invalid core subtype "' . $subtype . '" in renderer request', $subtype);
              }
              if ($coresubsystems[$subtype]) {
                  $rendererfile = $coresubsystems[$subtype] . '/renderer.php';
                  if (file_exists($rendererfile)) {
                      include_once($rendererfile);
                  }
              }
          }
  
          if (empty($subtype)) {
              // Theme specific auto-loaded name (only valid when prefixed with the theme name).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '_renderer'
              );
  
              // Standard autoloaded plugin name (not valid with a prefix).
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\renderer'
              );
              // Legacy class name - (valid with or without a prefix).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => true,
                  'autoloaded' => false,
                  'classname' => $component . '_renderer'
              );
          } else {
              // Theme specific auto-loaded name (only valid when prefixed with the theme name).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '\\' . $subtype . '_renderer'
              );
              // Version of the above with subtype being a namespace level on it's own.
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => false,
                  'autoloaded' => true,
                  'classname' => '\\output\\' . $component . '\\' . $subtype . '\\renderer'
              );
              // Standard autoloaded plugin name (not valid with a prefix).
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\' . $subtype . '_renderer'
              );
              // Version of the above with subtype being a namespace level on it's own.
              $classnames[] = array(
                  'validwithprefix' => false,
                  'validwithoutprefix' => true,
                  'autoloaded' => true,
                  'classname' => '\\' . $component . '\\output\\' . $subtype . '\\renderer'
              );
              // Legacy class name - (valid with or without a prefix).
              $classnames[] = array(
                  'validwithprefix' => true,
                  'validwithoutprefix' => true,
                  'autoloaded' => false,
                  'classname' => $component . '_' . $subtype . '_renderer'
              );
          }
          return $classnames;
      }
code_tokens: protected function standard_renderer_classnames ( $ component , $ subtype = null ) { global $ CFG ; // Needed in included files. $ classnames = array ( ) ; // Standardize component name ala frankenstyle. list ( $ plugin , $ type ) = core_component :: normalize_component ( $ component ) ; if ( $ type === null ) { $ component = $ plugin ; } else { $ component = $ plugin . '_' . $ type ; } if ( $ component !== 'core' ) { // Renderers are stored in renderer.php files. if ( ! $ compdirectory = core_component :: get_component_directory ( $ component ) ) { throw new coding_exception ( 'Invalid component specified in renderer request' , $ component ) ; } $ rendererfile = $ compdirectory . '/renderer.php' ; if ( file_exists ( $ rendererfile ) ) { include_once ( $ rendererfile ) ; } } else if ( ! empty ( $ subtype ) ) { $ coresubsystems = core_component :: get_core_subsystems ( ) ; if ( ! array_key_exists ( $ subtype , $ coresubsystems ) ) { // There may be nulls. throw new coding_exception ( 'Invalid core subtype "' . $ subtype . '" in renderer request' , $ subtype ) ; } if ( $ coresubsystems [ $ subtype ] ) { $ rendererfile = $ coresubsystems [ $ subtype ] . '/renderer.php' ; if ( file_exists ( $ rendererfile ) ) { include_once ( $ rendererfile ) ; } } } if ( empty ( $ subtype ) ) { // Theme specific auto-loaded name (only valid when prefixed with the theme name). $ classnames [ ] = array ( 'validwithprefix' => true , 'validwithoutprefix' => false , 'autoloaded' => true , 'classname' => '\\output\\' . $ component . '_renderer' ) ; // Standard autoloaded plugin name (not valid with a prefix). $ classnames [ ] = array ( 'validwithprefix' => false , 'validwithoutprefix' => true , 'autoloaded' => true , 'classname' => '\\' . $ component . '\\output\\renderer' ) ; // Legacy class name - (valid with or without a prefix). $ classnames [ ] = array ( 'validwithprefix' => true , 'validwithoutprefix' => true , 'autoloaded' => false , 'classname' => $ component . '_renderer' ) ; } else { // Theme specific auto-loaded name (only valid when prefixed with the theme name). $ classnames [ ] = array ( 'validwithprefix' => true , 'validwithoutprefix' => false , 'autoloaded' => true , 'classname' => '\\output\\' . $ component . '\\' . $ subtype . '_renderer' ) ; // Version of the above with subtype being a namespace level on it's own. $ classnames [ ] = array ( 'validwithprefix' => true , 'validwithoutprefix' => false , 'autoloaded' => true , 'classname' => '\\output\\' . $ component . '\\' . $ subtype . '\\renderer' ) ; // Standard autoloaded plugin name (not valid with a prefix). $ classnames [ ] = array ( 'validwithprefix' => false , 'validwithoutprefix' => true , 'autoloaded' => true , 'classname' => '\\' . $ component . '\\output\\' . $ subtype . '_renderer' ) ; // Version of the above with subtype being a namespace level on it's own. $ classnames [ ] = array ( 'validwithprefix' => false , 'validwithoutprefix' => true , 'autoloaded' => true , 'classname' => '\\' . $ component . '\\output\\' . $ subtype . '\\renderer' ) ; // Legacy class name - (valid with or without a prefix). $ classnames [ ] = array ( 'validwithprefix' => true , 'validwithoutprefix' => true , 'autoloaded' => false , 'classname' => $ component . '_' . $ subtype . '_renderer' ) ; } return $ classnames ; }
docstring: For a given module name, return the possible class names
  that defines the renderer interface for that module.
  
  Newer auto-loaded class names are returned as well as the old style _renderable classnames.
  
  Also, if it exists, include the renderer.php file for that module, so
  the class definition of the default renderer has been loaded.
  
  @param string $component name such as 'core', 'mod_forum' or 'qtype_multichoice'.
  @param string $subtype optional subtype such as 'news' resulting to:
  '\mod_forum\output\news_renderer'
  or '\mod_forum\output\news\renderer'
  or non-autoloaded 'mod_forum_news'
  @return array[] Each element of the array is an array with keys:
  classname - The class name to search
  autoloaded - Does this classname assume autoloading?
  validwithprefix - Is this class name valid when a prefix is added to it?
  validwithoutprefix - Is this class name valid when no prefix is added to it?
  @throws coding_exception
docstring_tokens: For a given module name return the possible class names that defines the renderer interface for that module .