protected function ThemeExtensionList::doGetBaseThemes in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Extension/ThemeExtensionList.php \Drupal\Core\Extension\ThemeExtensionList::doGetBaseThemes()
Finds the base themes for the specific theme.
Parameters
array $themes: An array of available themes.
string $theme: The name of the theme whose base we are looking for.
array $used_themes: (optional) A recursion parameter preventing endless loops. Defaults to an empty array.
Return value
array An array of base themes.
2 calls to ThemeExtensionList::doGetBaseThemes()
- ThemeExtensionList::fillInSubThemeData in core/
lib/ Drupal/ Core/ Extension/ ThemeExtensionList.php - Fills in data for themes that are also sub-themes.
- ThemeExtensionList::getBaseThemes in core/
lib/ Drupal/ Core/ Extension/ ThemeExtensionList.php - Finds all the base themes for the specified theme.
File
- core/
lib/ Drupal/ Core/ Extension/ ThemeExtensionList.php, line 232
Class
- ThemeExtensionList
- Provides a list of available themes.
Namespace
Drupal\Core\ExtensionCode
protected function doGetBaseThemes(array $themes, $theme, array $used_themes = []) {
if (!isset($themes[$theme]->info['base theme'])) {
return [];
}
$base_key = $themes[$theme]->info['base theme'];
// Does the base theme exist?
if (!isset($themes[$base_key])) {
return [
$base_key => NULL,
];
}
$current_base_theme = [
$base_key => $themes[$base_key]->info['name'],
];
// Is the base theme itself a child of another theme?
if (isset($themes[$base_key]->info['base theme'])) {
// Do we already know the base themes of this theme?
if (isset($themes[$base_key]->base_themes)) {
return $themes[$base_key]->base_themes + $current_base_theme;
}
// Prevent loops.
if (!empty($used_themes[$base_key])) {
return [
$base_key => NULL,
];
}
$used_themes[$base_key] = TRUE;
return $this
->doGetBaseThemes($themes, $base_key, $used_themes) + $current_base_theme;
}
// If we get here, then this is our parent theme.
return $current_base_theme;
}