diff --git a/wp-admin/admin-functions.php b/wp-admin/admin-functions.php
index 60164f080..63dd7b900 100644
--- a/wp-admin/admin-functions.php
+++ b/wp-admin/admin-functions.php
@@ -548,193 +548,6 @@ if ( !strstr($_SERVER['HTTP_USER_AGENT'], 'Safari') ) :
endif;
}
-function get_theme_data($theme_file) {
- $theme_data = implode('', file($theme_file));
- preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name);
- preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri);
- preg_match("|Description:(.*)|i", $theme_data, $description);
- preg_match("|Author:(.*)|i", $theme_data, $author_name);
- preg_match("|Author URI:(.*)|i", $theme_data, $author_uri);
- preg_match("|Template:(.*)|i", $theme_data, $template);
- if ( preg_match("|Version:(.*)|i", $theme_data, $version) )
- $version = $version[1];
- else
- $version ='';
-
- $description = wptexturize($description[1]);
-
- $name = $theme_name[1];
- $name = trim($name);
- $theme = $name;
- if ('' != $theme_uri[1] && '' != $name) {
- $theme = __("{$theme}");
- }
-
- if ('' == $author_uri[1]) {
- $author = $author_name[1];
- } else {
- $author = __("{$author_name[1]}");
- }
-
- return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]);
-}
-
-function get_themes() {
- $themes = array();
- $theme_loc = 'wp-content/themes';
- $theme_root = ABSPATH . $theme_loc;
-
- // Files in wp-content/themes directory
- $themes_dir = @ dir($theme_root);
- if ($themes_dir) {
- while(($theme_dir = $themes_dir->read()) !== false) {
- if (is_dir($theme_root . '/' . $theme_dir)) {
- $stylish_dir = @ dir($theme_root . '/' . $theme_dir);
- while(($theme_file = $stylish_dir->read()) !== false) {
- if ( $theme_file == 'style.css' ) {
- $theme_files[] = $theme_dir . '/' . $theme_file;
- }
- }
- }
- }
- }
-
- $default_files = array(get_settings('blogfilename'), 'wp-comments.php', 'wp-comments-popup.php', 'wp-comments-post.php', 'wp-footer.php', 'wp-header.php', 'wp-sidebar.php', 'footer.php', 'header.php', 'sidebar.php');
-
- // Get the files for the default template.
- $default_template_files = array();
- {
- $dirs = array('', 'wp-content');
- foreach ($dirs as $dir) {
- $template_dir = @ dir(ABSPATH . $dir);
- while(($file = $template_dir->read()) !== false) {
- if ( !preg_match('|^\.+$|', $file) && in_array($file, $default_files))
- $default_template_files[] = trim("$dir/$file", '/');
- }
- }
- }
-
- // Get the files for the default stylesheet.
- $default_stylesheet_files = array();
- {
- $stylesheet_dir = @ dir(ABSPATH);
- while(($file = $stylesheet_dir->read()) !== false) {
- if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file))
- $default_stylesheet_files[] = "$file";
- }
- }
-
- // The default theme always exists.
- $themes['Default'] = array('Name' => 'Default', 'Title' => 'WordPress Default', 'Description' => 'The default theme included with WordPress.', 'Author' => 'Dave Shea', 'Version' => '1.3', 'Template' => 'default', 'Stylesheet' => 'default', 'Template Files' => $default_template_files, 'Stylesheet Files' => $default_stylesheet_files, 'Template Dir' => '/', 'Stylesheet Dir' => '/', 'Parent Theme' => '');
-
- if (!$themes_dir || !$theme_files) {
- return $themes;
- }
-
- sort($theme_files);
-
- foreach($theme_files as $theme_file) {
- $theme_data = get_theme_data("$theme_root/$theme_file");
-
- $name = $theme_data['Name'];
- $title = $theme_data['Title'];
- $description = wptexturize($theme_data['Description']);
- $version = $theme_data['Version'];
- $author = $theme_data['Author'];
- $template = $theme_data['Template'];
- $stylesheet = dirname($theme_file);
-
- if (empty($template)) {
- if (file_exists(dirname("$theme_root/$theme_file/index.php"))) {
- $template = dirname($theme_file);
- } else {
- continue;
- }
- }
-
- $template = trim($template);
-
- if (($template != 'default') && (! file_exists("$theme_root/$template/index.php"))) {
- continue;
- }
-
- if (empty($name)) {
- $name = dirname($theme_file);
- $title = $name;
- }
-
- $stylesheet_files = array();
- if ($stylesheet != 'default') {
- $stylesheet_dir = @ dir("$theme_root/$stylesheet");
- if ($stylesheet_dir) {
- while(($file = $stylesheet_dir->read()) !== false) {
- if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )
- $stylesheet_files[] = "$theme_loc/$stylesheet/$file";
- }
- }
- } else {
- $stylesheet_files = $default_stylesheet_files;
- }
-
- $template_files = array();
- if ($template != 'default') {
- $template_dir = @ dir("$theme_root/$template");
- if ($template_dir) {
- while(($file = $template_dir->read()) !== false) {
- if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
- $template_files[] = "$theme_loc/$template/$file";
- }
- }
- } else {
- $template_files = $default_template_files;
- }
-
- $template_dir = dirname($template_files[0]);
- $stylesheet_dir = dirname($stylesheet_files[0]);
-
- if (empty($template_dir)) $template_dir = '/';
- if (empty($stylesheet_dir)) $stylesheet_dir = '/';
-
- $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);
- }
-
- // Resolve theme dependencies.
- $theme_names = array_keys($themes);
-
- foreach ($theme_names as $theme_name) {
- $themes[$theme_name]['Parent Theme'] = '';
- if ($themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template']) {
- foreach ($theme_names as $parent_theme_name) {
- if (($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template'])) {
- $themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
- break;
- }
- }
- }
- }
-
- return $themes;
-}
-
-function get_current_theme() {
- $themes = get_themes();
- $theme_names = array_keys($themes);
- $current_template = get_settings('template');
- $current_stylesheet = get_settings('stylesheet');
- $current_theme = 'Default';
-
- if ($themes) {
- foreach ($theme_names as $theme_name) {
- if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
- $themes[$theme_name]['Template'] == $current_template) {
- $current_theme = $themes[$theme_name]['Name'];
- }
- }
- }
-
- return $current_theme;
-}
-
function validate_current_theme() {
$theme_loc = 'wp-content/themes';
$theme_root = ABSPATH . $theme_loc;
diff --git a/wp-includes/functions.php b/wp-includes/functions.php
index 15e697ff0..f628b2726 100644
--- a/wp-includes/functions.php
+++ b/wp-includes/functions.php
@@ -1850,6 +1850,211 @@ function get_template_directory() {
return $template;
}
+function get_theme_data($theme_file) {
+ $theme_data = implode('', file($theme_file));
+ preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name);
+ preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri);
+ preg_match("|Description:(.*)|i", $theme_data, $description);
+ preg_match("|Author:(.*)|i", $theme_data, $author_name);
+ preg_match("|Author URI:(.*)|i", $theme_data, $author_uri);
+ preg_match("|Template:(.*)|i", $theme_data, $template);
+ if ( preg_match("|Version:(.*)|i", $theme_data, $version) )
+ $version = $version[1];
+ else
+ $version ='';
+
+ $description = wptexturize($description[1]);
+
+ $name = $theme_name[1];
+ $name = trim($name);
+ $theme = $name;
+ if ('' != $theme_uri[1] && '' != $name) {
+ $theme = __("{$theme}");
+ }
+
+ if ('' == $author_uri[1]) {
+ $author = $author_name[1];
+ } else {
+ $author = __("{$author_name[1]}");
+ }
+
+ return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]);
+}
+
+function get_themes() {
+ global $wp_themes;
+
+ if (isset($wp_themes)) {
+ return $wp_themes;
+ }
+
+ $themes = array();
+ $theme_loc = 'wp-content/themes';
+ $theme_root = ABSPATH . $theme_loc;
+
+ // Files in wp-content/themes directory
+ $themes_dir = @ dir($theme_root);
+ if ($themes_dir) {
+ while(($theme_dir = $themes_dir->read()) !== false) {
+ if (is_dir($theme_root . '/' . $theme_dir)) {
+ $stylish_dir = @ dir($theme_root . '/' . $theme_dir);
+ while(($theme_file = $stylish_dir->read()) !== false) {
+ if ( $theme_file == 'style.css' ) {
+ $theme_files[] = $theme_dir . '/' . $theme_file;
+ }
+ }
+ }
+ }
+ }
+
+ $default_files = array(get_settings('blogfilename'), 'wp-comments.php', 'wp-comments-popup.php', 'wp-comments-post.php', 'wp-footer.php', 'wp-header.php', 'wp-sidebar.php', 'footer.php', 'header.php', 'sidebar.php');
+
+ // Get the files for the default template.
+ $default_template_files = array();
+ {
+ $dirs = array('', 'wp-content');
+ foreach ($dirs as $dir) {
+ $template_dir = @ dir(ABSPATH . $dir);
+ while(($file = $template_dir->read()) !== false) {
+ if ( !preg_match('|^\.+$|', $file) && in_array($file, $default_files))
+ $default_template_files[] = trim("$dir/$file", '/');
+ }
+ }
+ }
+
+ // Get the files for the default stylesheet.
+ $default_stylesheet_files = array();
+ {
+ $stylesheet_dir = @ dir(ABSPATH);
+ while(($file = $stylesheet_dir->read()) !== false) {
+ if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file))
+ $default_stylesheet_files[] = "$file";
+ }
+ }
+
+ // The default theme always exists.
+ $themes['Default'] = array('Name' => 'Default', 'Title' => 'WordPress Default', 'Description' => 'The default theme included with WordPress.', 'Author' => 'Dave Shea', 'Version' => '1.3', 'Template' => 'default', 'Stylesheet' => 'default', 'Template Files' => $default_template_files, 'Stylesheet Files' => $default_stylesheet_files, 'Template Dir' => '/', 'Stylesheet Dir' => '/', 'Parent Theme' => '');
+
+ if (!$themes_dir || !$theme_files) {
+ return $themes;
+ }
+
+ sort($theme_files);
+
+ foreach($theme_files as $theme_file) {
+ $theme_data = get_theme_data("$theme_root/$theme_file");
+
+ $name = $theme_data['Name'];
+ $title = $theme_data['Title'];
+ $description = wptexturize($theme_data['Description']);
+ $version = $theme_data['Version'];
+ $author = $theme_data['Author'];
+ $template = $theme_data['Template'];
+ $stylesheet = dirname($theme_file);
+
+ if (empty($template)) {
+ if (file_exists(dirname("$theme_root/$theme_file/index.php"))) {
+ $template = dirname($theme_file);
+ } else {
+ continue;
+ }
+ }
+
+ $template = trim($template);
+
+ if (($template != 'default') && (! file_exists("$theme_root/$template/index.php"))) {
+ continue;
+ }
+
+ if (empty($name)) {
+ $name = dirname($theme_file);
+ $title = $name;
+ }
+
+ $stylesheet_files = array();
+ if ($stylesheet != 'default') {
+ $stylesheet_dir = @ dir("$theme_root/$stylesheet");
+ if ($stylesheet_dir) {
+ while(($file = $stylesheet_dir->read()) !== false) {
+ if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )
+ $stylesheet_files[] = "$theme_loc/$stylesheet/$file";
+ }
+ }
+ } else {
+ $stylesheet_files = $default_stylesheet_files;
+ }
+
+ $template_files = array();
+ if ($template != 'default') {
+ $template_dir = @ dir("$theme_root/$template");
+ if ($template_dir) {
+ while(($file = $template_dir->read()) !== false) {
+ if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
+ $template_files[] = "$theme_loc/$template/$file";
+ }
+ }
+ } else {
+ $template_files = $default_template_files;
+ }
+
+ $template_dir = dirname($template_files[0]);
+ $stylesheet_dir = dirname($stylesheet_files[0]);
+
+ if (empty($template_dir)) $template_dir = '/';
+ if (empty($stylesheet_dir)) $stylesheet_dir = '/';
+
+ $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);
+ }
+
+ // Resolve theme dependencies.
+ $theme_names = array_keys($themes);
+
+ foreach ($theme_names as $theme_name) {
+ $themes[$theme_name]['Parent Theme'] = '';
+ if ($themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template']) {
+ foreach ($theme_names as $parent_theme_name) {
+ if (($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template'])) {
+ $themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
+ break;
+ }
+ }
+ }
+ }
+
+ $wp_themes = $themes;
+
+ return $themes;
+}
+
+function get_theme($theme) {
+ $themes = get_themes();
+
+ if (array_key_exists($theme, $themes)) {
+ return $themes[$theme];
+ }
+
+ return NULL;
+}
+
+function get_current_theme() {
+ $themes = get_themes();
+ $theme_names = array_keys($themes);
+ $current_template = get_settings('template');
+ $current_stylesheet = get_settings('stylesheet');
+ $current_theme = 'Default';
+
+ if ($themes) {
+ foreach ($theme_names as $theme_name) {
+ if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
+ $themes[$theme_name]['Template'] == $current_template) {
+ $current_theme = $themes[$theme_name]['Name'];
+ }
+ }
+ }
+
+ return $current_theme;
+}
+
function get_page_template() {
global $wp_query;