original_string: private static function find_theme_config($themename, $settings, $parentscheck = true) {
          // We have to use the variable name $THEME (upper case) because that
          // is what is used in theme config.php files.
  
          if (!$dir = theme_config::find_theme_location($themename)) {
              return null;
          }
  
          $THEME = new stdClass();
          $THEME->name     = $themename;
          $THEME->dir      = $dir;
          $THEME->settings = $settings;
  
          global $CFG; // just in case somebody tries to use $CFG in theme config
          include("$THEME->dir/config.php");
  
          // verify the theme configuration is OK
          if (!is_array($THEME->parents)) {
              // parents option is mandatory now
              return null;
          } else {
              // We use $parentscheck to only check the direct parents (avoid infinite loop).
              if ($parentscheck) {
                  // Find all parent theme configs.
                  foreach ($THEME->parents as $parent) {
                      $parentconfig = theme_config::find_theme_config($parent, $settings, false);
                      if (empty($parentconfig)) {
                          return null;
                      }
                  }
              }
          }
  
          return $THEME;
      }
code: private static function find_theme_config($themename, $settings, $parentscheck = true) {
          // We have to use the variable name $THEME (upper case) because that
          // is what is used in theme config.php files.
  
          if (!$dir = theme_config::find_theme_location($themename)) {
              return null;
          }
  
          $THEME = new stdClass();
          $THEME->name     = $themename;
          $THEME->dir      = $dir;
          $THEME->settings = $settings;
  
          global $CFG; // just in case somebody tries to use $CFG in theme config
          include("$THEME->dir/config.php");
  
          // verify the theme configuration is OK
          if (!is_array($THEME->parents)) {
              // parents option is mandatory now
              return null;
          } else {
              // We use $parentscheck to only check the direct parents (avoid infinite loop).
              if ($parentscheck) {
                  // Find all parent theme configs.
                  foreach ($THEME->parents as $parent) {
                      $parentconfig = theme_config::find_theme_config($parent, $settings, false);
                      if (empty($parentconfig)) {
                          return null;
                      }
                  }
              }
          }
  
          return $THEME;
      }
code_tokens: private static function find_theme_config ( $ themename , $ settings , $ parentscheck = true ) { // We have to use the variable name $THEME (upper case) because that // is what is used in theme config.php files. if ( ! $ dir = theme_config :: find_theme_location ( $ themename ) ) { return null ; } $ THEME = new stdClass ( ) ; $ THEME -> name = $ themename ; $ THEME -> dir = $ dir ; $ THEME -> settings = $ settings ; global $ CFG ; // just in case somebody tries to use $CFG in theme config include ( "$THEME->dir/config.php" ) ; // verify the theme configuration is OK if ( ! is_array ( $ THEME -> parents ) ) { // parents option is mandatory now return null ; } else { // We use $parentscheck to only check the direct parents (avoid infinite loop). if ( $ parentscheck ) { // Find all parent theme configs. foreach ( $ THEME -> parents as $ parent ) { $ parentconfig = theme_config :: find_theme_config ( $ parent , $ settings , false ) ; if ( empty ( $ parentconfig ) ) { return null ; } } } } return $ THEME ; }
docstring: Loads the theme config from config.php file.
  
  @param string $themename
  @param stdClass $settings from config_plugins table
  @param boolean $parentscheck true to also check the parents.    .
  @return stdClass The theme configuration
docstring_tokens: Loads the theme config from config . php file .