Make WordPress Core


Ignore:
Timestamp:
10/14/2004 03:54:57 AM (22 years ago)
Author:
rboren
Message:

Move get_theme*() from admin-functions to functions so that templates and plugins can use them.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/admin-functions.php

    r1758 r1792  
    549549}
    550550
    551 function get_theme_data($theme_file) {
    552         $theme_data = implode('', file($theme_file));
    553         preg_match("|Theme Name:(.*)|i", $theme_data, $theme_name);
    554         preg_match("|Theme URI:(.*)|i", $theme_data, $theme_uri);
    555         preg_match("|Description:(.*)|i", $theme_data, $description);
    556         preg_match("|Author:(.*)|i", $theme_data, $author_name);
    557         preg_match("|Author URI:(.*)|i", $theme_data, $author_uri);
    558         preg_match("|Template:(.*)|i", $theme_data, $template);
    559         if ( preg_match("|Version:(.*)|i", $theme_data, $version) )
    560                 $version = $version[1];
    561         else
    562                 $version ='';
    563 
    564         $description = wptexturize($description[1]);
    565 
    566         $name = $theme_name[1];
    567         $name = trim($name);
    568         $theme = $name;
    569         if ('' != $theme_uri[1] && '' != $name) {
    570                 $theme = __("<a href='{$theme_uri[1]}' title='Visit theme homepage'>{$theme}</a>");
    571         }
    572 
    573         if ('' == $author_uri[1]) {
    574                 $author = $author_name[1];
    575         } else {
    576                 $author = __("<a href='{$author_uri[1]}' title='Visit author homepage'>{$author_name[1]}</a>");
    577         }
    578 
    579         return array('Name' => $name, 'Title' => $theme, 'Description' => $description, 'Author' => $author, 'Version' => $version, 'Template' => $template[1]);
    580 }
    581 
    582 function get_themes() {
    583         $themes = array();
    584         $theme_loc = 'wp-content/themes';
    585         $theme_root = ABSPATH . $theme_loc;
    586 
    587         // Files in wp-content/themes directory
    588         $themes_dir = @ dir($theme_root);
    589         if ($themes_dir) {
    590                 while(($theme_dir = $themes_dir->read()) !== false) {
    591                         if (is_dir($theme_root . '/' . $theme_dir)) {
    592                                 $stylish_dir = @ dir($theme_root . '/' . $theme_dir);
    593                                 while(($theme_file = $stylish_dir->read()) !== false) {
    594                                         if ( $theme_file == 'style.css' ) {
    595                                                 $theme_files[] = $theme_dir . '/' . $theme_file;
    596                                         }
    597                                 }
    598                         }
    599                 }
    600         }
    601 
    602         $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');
    603 
    604         // Get the files for the default template.
    605         $default_template_files = array();
    606         {
    607                 $dirs = array('', 'wp-content');
    608                 foreach ($dirs as $dir) {
    609                         $template_dir = @ dir(ABSPATH . $dir);
    610                         while(($file = $template_dir->read()) !== false) {
    611                                 if ( !preg_match('|^\.+$|', $file) && in_array($file, $default_files))
    612                                         $default_template_files[] = trim("$dir/$file", '/');
    613                         }
    614                 }
    615         }
    616 
    617         // Get the files for the default stylesheet.
    618         $default_stylesheet_files = array();
    619         {
    620                 $stylesheet_dir = @ dir(ABSPATH);
    621                 while(($file = $stylesheet_dir->read()) !== false) {
    622                         if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file))
    623                                 $default_stylesheet_files[] = "$file";
    624                 }
    625         }
    626        
    627         // The default theme always exists.
    628         $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' => '');
    629 
    630         if (!$themes_dir || !$theme_files) {
    631                 return $themes;
    632         }
    633 
    634         sort($theme_files);
    635 
    636         foreach($theme_files as $theme_file) {
    637                 $theme_data = get_theme_data("$theme_root/$theme_file");
    638          
    639                 $name = $theme_data['Name'];
    640                 $title = $theme_data['Title'];
    641                 $description = wptexturize($theme_data['Description']);
    642                 $version = $theme_data['Version'];
    643                 $author = $theme_data['Author'];
    644                 $template = $theme_data['Template'];
    645                 $stylesheet = dirname($theme_file);
    646 
    647                 if (empty($template)) {
    648                         if (file_exists(dirname("$theme_root/$theme_file/index.php"))) {
    649                                 $template = dirname($theme_file);
    650                         } else {
    651                                 continue;
    652                         }
    653                 }
    654 
    655                 $template = trim($template);
    656 
    657                 if (($template != 'default') && (! file_exists("$theme_root/$template/index.php"))) {
    658                         continue;
    659                 }
    660 
    661                 if (empty($name)) {
    662                         $name = dirname($theme_file);
    663                         $title = $name;
    664                 }
    665                
    666                 $stylesheet_files = array();
    667                 if ($stylesheet != 'default') {
    668                         $stylesheet_dir = @ dir("$theme_root/$stylesheet");
    669                         if ($stylesheet_dir) {
    670                                 while(($file = $stylesheet_dir->read()) !== false) {
    671                                         if ( !preg_match('|^\.+$|', $file) && preg_match('|\.css$|', $file) )
    672                                                 $stylesheet_files[] = "$theme_loc/$stylesheet/$file";
    673                                 }
    674                         }
    675                 } else {
    676                         $stylesheet_files = $default_stylesheet_files;
    677                 }
    678 
    679                 $template_files = array();             
    680                 if ($template != 'default') {
    681                         $template_dir = @ dir("$theme_root/$template");
    682                         if ($template_dir) {
    683                                 while(($file = $template_dir->read()) !== false) {
    684                                         if ( !preg_match('|^\.+$|', $file) && preg_match('|\.php$|', $file) )
    685                                                 $template_files[] = "$theme_loc/$template/$file";
    686                                 }
    687                         }
    688                 } else {
    689                         $template_files = $default_template_files;
    690                 }
    691 
    692                 $template_dir = dirname($template_files[0]);
    693                 $stylesheet_dir = dirname($stylesheet_files[0]);
    694 
    695                 if (empty($template_dir)) $template_dir = '/';
    696                 if (empty($stylesheet_dir)) $stylesheet_dir = '/';
    697                
    698                 $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);
    699         }
    700 
    701         // Resolve theme dependencies.
    702         $theme_names = array_keys($themes);
    703 
    704         foreach ($theme_names as $theme_name) {
    705                 $themes[$theme_name]['Parent Theme'] = '';
    706                 if ($themes[$theme_name]['Stylesheet'] != $themes[$theme_name]['Template']) {
    707                         foreach ($theme_names as $parent_theme_name) {
    708                                 if (($themes[$parent_theme_name]['Stylesheet'] == $themes[$parent_theme_name]['Template']) && ($themes[$parent_theme_name]['Template'] == $themes[$theme_name]['Template'])) {
    709                                         $themes[$theme_name]['Parent Theme'] = $themes[$parent_theme_name]['Name'];
    710                                         break;
    711                                 }
    712                         }
    713                 }
    714         }
    715 
    716         return $themes;
    717 }
    718 
    719 function get_current_theme() {
    720         $themes = get_themes();
    721         $theme_names = array_keys($themes);
    722         $current_template = get_settings('template');
    723         $current_stylesheet = get_settings('stylesheet');
    724         $current_theme = 'Default';
    725 
    726         if ($themes) {
    727                 foreach ($theme_names as $theme_name) {
    728                         if ($themes[$theme_name]['Stylesheet'] == $current_stylesheet &&
    729                                         $themes[$theme_name]['Template'] == $current_template) {
    730                                 $current_theme = $themes[$theme_name]['Name'];
    731                         }
    732                 }
    733         }
    734 
    735         return $current_theme;
    736 }
    737 
    738551function validate_current_theme() {
    739552        $theme_loc = 'wp-content/themes';
Note: See TracChangeset for help on using the changeset viewer.