WordPress.org

Make WordPress Core

Ticket #16410: 16410.diff

File 16410.diff, 3.7 KB (added by solarissmoke, 7 years ago)
  • theme.php

     
    592592                if ( !$themes_dir )
    593593                        return false;
    594594
    595                 while ( ($theme_dir = readdir($themes_dir)) !== false ) {
    596                         if ( is_dir($theme_root . '/' . $theme_dir) && is_readable($theme_root . '/' . $theme_dir) ) {
    597                                 if ( $theme_dir[0] == '.' || $theme_dir == 'CVS' )
    598                                         continue;
     595                while ( ( $theme_dir = readdir( $themes_dir ) ) !== false ) {
     596                        $subdir = "$theme_root/$theme_dir";
     597                       
     598                        if ( '.' == $theme_dir[0] || !is_dir( $subdir ) || ! is_readable( $subdir ) )
     599                                continue;
     600                       
     601                        $stylish_dir = @opendir( $subdir );
     602                        $found_stylesheet = false;
    599603
    600                                 $stylish_dir = @opendir($theme_root . '/' . $theme_dir);
    601                                 $found_stylesheet = false;
    602 
    603                                 while ( ($theme_file = readdir($stylish_dir)) !== false ) {
    604                                         if ( $theme_file == 'style.css' ) {
    605                                                 $theme_files[$theme_dir] = array( 'theme_file' => $theme_dir . '/' . $theme_file, 'theme_root' => $theme_root );
    606                                                 $found_stylesheet = true;
    607                                                 break;
    608                                         }
     604                        while ( ( $theme_file = readdir( $stylish_dir ) ) !== false ) {
     605                                if ( $theme_file == 'style.css' ) {
     606                                        $theme_files[$theme_dir] = array( 'theme_file' => $theme_dir . '/' . $theme_file, 'theme_root' => $theme_root );
     607                                        $found_stylesheet = true;
     608                                        break;
    609609                                }
    610                                 @closedir($stylish_dir);
     610                        }
     611                        @closedir($stylish_dir);
    611612
    612                                 if ( !$found_stylesheet ) { // look for themes in that dir
    613                                         $subdir = "$theme_root/$theme_dir";
    614                                         $subdir_name = $theme_dir;
    615                                         $theme_subdirs = @opendir( $subdir );
     613                        if ( !$found_stylesheet ) { // look for themes in that dir
     614                                $subdir_name = $theme_dir;
     615                                $theme_subdirs = @opendir( $subdir );
     616                                $found_subdir_themes = false;
     617                               
     618                                while ( ( $theme_subdir = readdir( $theme_subdirs ) ) !== false ) {
     619                                        $sub_subdir = "$subdir/$theme_subdir";
     620                                       
     621                                        if ( '.' == $theme_subdir[0] || !is_dir( $sub_subdir ) || !is_readable( $sub_subdir ) )
     622                                                continue;
    616623
    617                                         $found_subdir_themes = false;
    618                                         while ( ($theme_subdir = readdir($theme_subdirs)) !== false ) {
    619                                                 if ( is_dir( $subdir . '/' . $theme_subdir) && is_readable($subdir . '/' . $theme_subdir) ) {
    620                                                         if ( $theme_subdir[0] == '.' || $theme_subdir == 'CVS' )
    621                                                                 continue;
     624                                        $stylish_dir = @opendir( $sub_subdir );
     625                                        $found_stylesheet = false;
    622626
    623                                                         $stylish_dir = @opendir($subdir . '/' . $theme_subdir);
    624                                                         $found_stylesheet = false;
    625 
    626                                                         while ( ($theme_file = readdir($stylish_dir)) !== false ) {
    627                                                                 if ( $theme_file == 'style.css' ) {
    628                                                                         $theme_files["$theme_dir/$theme_subdir"] = array( 'theme_file' => $subdir_name . '/' . $theme_subdir . '/' . $theme_file, 'theme_root' => $theme_root );
    629                                                                         $found_stylesheet = true;
    630                                                                         $found_subdir_themes = true;
    631                                                                         break;
    632                                                                 }
    633                                                         }
    634                                                         @closedir($stylish_dir);
     627                                        while ( ($theme_file = readdir($stylish_dir)) !== false ) {
     628                                                if ( $theme_file == 'style.css' ) {
     629                                                        $theme_files["$theme_dir/$theme_subdir"] = array( 'theme_file' => $subdir_name . '/' . $theme_subdir . '/' . $theme_file, 'theme_root' => $theme_root );
     630                                                        $found_stylesheet = true;
     631                                                        $found_subdir_themes = true;
     632                                                        break;
    635633                                                }
    636634                                        }
    637                                         @closedir($theme_subdirs);
    638                                         if ( !$found_subdir_themes )
    639                                                 $wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
     635                                        @closedir($stylish_dir);
    640636                                }
     637                                @closedir($theme_subdirs);
     638                                if ( !$found_subdir_themes )
     639                                        $wp_broken_themes[$theme_dir] = array('Name' => $theme_dir, 'Title' => $theme_dir, 'Description' => __('Stylesheet is missing.'));
    641640                        }
    642641                }
    643642                @closedir( $themes_dir );