function ctools_find_base_themes

Find all the base themes for the specified theme.

Themes can inherit templates and function implementations from earlier themes.

NOTE: this is a verbatim copy of system_find_base_themes(), which was not implemented until 6.14. It is included here only as a fallback for outdated versions of drupal core.

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

array Returns an array of all of the theme's ancestors; the first element's value will be NULL if an error occurred. (Note: this is NOT $arr[0]).

1 call to ctools_find_base_themes()
_ctools_list_themes in includes/plugins.inc
Helper to build a ctools-friendly list of themes capable of providing plugins.

File

includes/plugins.inc, line 608

Code

function ctools_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 ctools_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;
}