Handle theme name collisions more elegantly.

git-svn-id: http://svn.automattic.com/wordpress/trunk@2568 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
ryan 2005-04-21 01:35:52 +00:00
parent 797c0e896f
commit edb0d26bef
1 changed files with 20 additions and 1 deletions

View File

@ -1593,6 +1593,24 @@ function get_themes() {
if (empty($template_dir)) $template_dir = '/'; if (empty($template_dir)) $template_dir = '/';
if (empty($stylesheet_dir)) $stylesheet_dir = '/'; if (empty($stylesheet_dir)) $stylesheet_dir = '/';
// Check for theme name collision. This occurs if a theme is copied to
// a new theme directory and the theme header is not updated. Whichever
// theme is first keeps the name. Subsequent themes get a suffix applied.
// The Default and Classic themes always trump their pretenders.
if ( isset($themes[$name]) ) {
if ( ('WordPress Default' == $name || 'WordPress Classic' == $name) &&
('default' == $stylesheet || 'classic' == $stylesheet) ) {
// If another theme has claimed to be one of our default themes, move
// them aside.
$suffix = $themes[$name]['Stylesheet'];
$new_name = "$name/$suffix";
$themes[$new_name] = $themes[$name];
$themes[$new_name]['Name'] = $new_name;
} else {
$name = "$name/$stylesheet";
}
}
$themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir, 'Status' => $theme_data['Status']); $themes[$name] = array('Name' => $name, 'Title' => $title, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template, 'Stylesheet' => $stylesheet, 'Template Files' => $template_files, 'Stylesheet Files' => $stylesheet_files, 'Template Dir' => $template_dir, 'Stylesheet Dir' => $stylesheet_dir, 'Status' => $theme_data['Status']);
} }
@ -1632,13 +1650,14 @@ function get_current_theme() {
$theme_names = array_keys($themes); $theme_names = array_keys($themes);
$current_template = get_settings('template'); $current_template = get_settings('template');
$current_stylesheet = get_settings('stylesheet'); $current_stylesheet = get_settings('stylesheet');
$current_theme = 'Default'; $current_theme = 'WordPress Default';
if ($themes) { if ($themes) {
foreach ($theme_names as $theme_name) { foreach ($theme_names as $theme_name) {
if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet && if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
$themes[$theme_name]['Template'] == $current_template) { $themes[$theme_name]['Template'] == $current_template) {
$current_theme = $themes[$theme_name]['Name']; $current_theme = $themes[$theme_name]['Name'];
break;
} }
} }
} }