function drupal_find_base_themes
7.x theme.inc | drupal_find_base_themes($themes, $key, $used_keys = array()) |
Find all the base themes for the specified theme.
Themes can inherit templates and function implementations from earlier themes.
Parameters
$themes: An array of available themes.
$key: The name of the theme whose base we are looking for.
$used_keys: A recursion parameter preventing endless loops.
Return value
Returns an array of all of the theme's ancestors; the first element's value will be NULL if an error occurred.
3 calls to drupal_find_base_themes()
- system_find_base_themes in drupal-7.x/
modules/ system/ system.module - Find all the base themes for the specified theme.
- system_list in drupal-7.x/
includes/ module.inc - Builds a list of bootstrap modules and enabled modules and themes.
- _system_rebuild_theme_data in drupal-7.x/
modules/ system/ system.module - Helper function to scan and collect theme .info data and their engines.
File
- drupal-7.x/
includes/ theme.inc, line 843 - The theme system, which controls the output of Drupal.
Code
function drupal_find_base_themes($themes, $key, $used_keys = array()) {
$base_key = $themes[$key]->info['base theme'];
// Does the base theme exist?
if (!isset($themes[$base_key])) {
return array($base_key => NULL);
}
$current_base_theme = array($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_keys[$base_key])) {
return array($base_key => NULL);
}
$used_keys[$base_key] = TRUE;
return drupal_find_base_themes($themes, $base_key, $used_keys) + $current_base_theme;
}
// If we get here, then this is our parent theme.
return $current_base_theme;
}