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;
    }
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;
    }
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 ; }
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
For a given module name return the possible class names that defines the renderer interface for that module .