Make WordPress Core

Ticket #11214: 11214-first-pass.diff

File 11214-first-pass.diff, 2.6 KB (added by westi, 10 years ago)

A first pass at a simple implementation of this

  • wp-includes/theme.php

     
    350350                        while ( ($file = $stylesheet_dir->read()) !== false ) {
    351351                                if ( !preg_match('|^\.+$|', $file) ) {
    352352                                        if ( preg_match('|\.css$|', $file) )
    353                                                 $stylesheet_files[] = "$theme_root/$stylesheet/$file";
     353                                                $stylesheet_files[] = "$file";
    354354                                        elseif ( preg_match('|\.php$|', $file) )
    355                                                 $template_files[] = "$theme_root/$stylesheet/$file";
     355                                                $template_files[] = "$file";
    356356                                }
    357357                        }
    358358                        @ $stylesheet_dir->close();
     
    364364                                if ( preg_match('|^\.+$|', $file) )
    365365                                        continue;
    366366                                if ( preg_match('|\.php$|', $file) ) {
    367                                         $template_files[] = "$template_directory/$file";
     367                                        $template_files[] = "$file";
    368368                                } elseif ( is_dir("$template_directory/$file") ) {
    369369                                        $template_subdir = @ dir("$template_directory/$file");
    370370                                        if ( !$template_subdir )
     
    373373                                                if ( preg_match('|^\.+$|', $subfile) )
    374374                                                        continue;
    375375                                                if ( preg_match('|\.php$|', $subfile) )
    376                                                         $template_files[] = "$template_directory/$file/$subfile";
     376                                                        $template_files[] = "$file/$subfile";
    377377                                        }
    378378                                        @ $template_subdir->close();
    379379                                }
  • wp-admin/theme-editor.php

     
    5555if ( ! isset($themes[$theme]) )
    5656        wp_die(__('The requested theme does not exist.'));
    5757
    58 $allowed_files = array_merge( $themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files'] );
    5958
     59$stylefiles = $themes[$theme]['Stylesheet Files'];
     60foreach ( $stylefiles as $key => $filename )
     61        $stylefiles[$key] = $themes[$theme]['Stylesheet Dir'] . '/' . $filename;
     62
     63$themefiles = $themes[$theme]['Template Files'];
     64foreach ( $themefiles as $key => $filename )
     65        $themefiles[$key] = $themes[$theme]['Template Dir'] . '/' . $filename;
     66
     67$allowed_files = array_merge( $stylefiles, $themefiles );
     68
    6069if ( empty( $file ) ) {
    6170        if ( false !== array_search( $themes[$theme]['Stylesheet Dir'] . '/style.css', $allowed_files ) )
    6271                $file = $themes[$theme]['Stylesheet Dir'] . '/style.css';
     
    6574} else {
    6675        $file = stripslashes($file);
    6776        if ( 'theme' == $dir ) {
    68                 $file = dirname(dirname($themes[$theme]['Template Dir'])) . $file ;
     77                $file = $themes[$theme]['Template Dir'] . '/' . $file ;
    6978        } else if ( 'style' == $dir) {
    70                 $file = dirname(dirname($themes[$theme]['Stylesheet Dir'])) . $file ;
     79                $file = $themes[$theme]['Stylesheet Dir'] . '/' . $file ;
    7180        }
    7281}
    7382