WordPress.org

Make WordPress Core

Ticket #16937: 16937.patch

File 16937.patch, 3.2 KB (added by hakre, 4 years ago)

16937.patch

  • wp-admin/includes/upgrade.php

    ### Eclipse Workspace Patch 1.0
    #P wordpress-trunk bare
     
    16951695 
    16961696        // Copy files from the default theme to the site theme. 
    16971697        //$files = array('index.php', 'comments.php', 'comments-popup.php', 'footer.php', 'header.php', 'sidebar.php', 'style.css'); 
     1698         
     1699        if( ! @make_directory_file_copy( $default_dir, $site_dir ) )  
     1700                return; 
    16981701 
    1699         $theme_dir = @ opendir($default_dir); 
    1700         if ($theme_dir) { 
    1701                 while(($theme_file = readdir( $theme_dir )) !== false) { 
    1702                         if (is_dir("$default_dir/$theme_file")) 
    1703                                 continue; 
    1704                         if (! @copy("$default_dir/$theme_file", "$site_dir/$theme_file")) 
    1705                                 return; 
    1706                         chmod("$site_dir/$theme_file", 0777); 
    1707                 } 
    1708         } 
    1709         @closedir($theme_dir); 
    1710  
    17111702        // Rewrite the theme header. 
    1712         $stylelines = explode("\n", implode('', file("$site_dir/style.css"))); 
    1713         if ($stylelines) { 
    1714                 $f = fopen("$site_dir/style.css", 'w'); 
     1703        $stylelines = file( "$site_dir/style.css", FILE_IGNORE_NEW_LINES ); 
     1704        if ( $stylelines ) { 
     1705                $headers = array( 
     1706                        'Theme Name:' => $theme_name, 
     1707                        'Theme URI:' => __get_option( 'url' ), 
     1708                        'Description:' => 'Your theme.', 
     1709                        'Version:' => '1', 
     1710                        'Author:' => 'You' 
     1711                ); 
    17151712 
    1716                 foreach ($stylelines as $line) { 
    1717                         if (strpos($line, 'Theme Name:') !== false) $line = 'Theme Name: ' . $theme_name; 
    1718                         elseif (strpos($line, 'Theme URI:') !== false) $line = 'Theme URI: ' . __get_option('url'); 
    1719                         elseif (strpos($line, 'Description:') !== false) $line = 'Description: Your theme.'; 
    1720                         elseif (strpos($line, 'Version:') !== false) $line = 'Version: 1'; 
    1721                         elseif (strpos($line, 'Author:') !== false) $line = 'Author: You'; 
    1722                         fwrite($f, $line . "\n"); 
    1723                 } 
    1724                 fclose($f); 
     1713                foreach ( $stylelines as &$line ) 
     1714                        foreach ( $headers as $header => $value ) 
     1715                                if ( strpos( $line, $header ) !== false ) 
     1716                                        $line = $header . ' ' . $value 
     1717                        ; 
     1718 
     1719                file_put_contents( "$site_dir/style.css", implode( "\n", $stylelines ) ); 
    17251720        } 
    17261721 
    17271722        // Copy the images. 
     
    17301725                return false; 
    17311726        } 
    17321727 
    1733         $images_dir = @ opendir("$default_dir/images"); 
    1734         if ($images_dir) { 
    1735                 while(($image = readdir($images_dir)) !== false) { 
    1736                         if (is_dir("$default_dir/images/$image")) 
     1728        @make_directory_file_copy( "$default_dir/images", "$site_dir/images" ); 
     1729} 
     1730 
     1731/** 
     1732 * Copy files from origin directory into target directory 
     1733 * and set their mode to 0777. 
     1734 *  
     1735 * @param $origin string Directory to copy files from 
     1736 * @param $target string Directory to copy files to 
     1737 * @return bool false if unable to copy one of the files 
     1738 */ 
     1739function make_directory_file_copy($origin, $target, $mode = 0777) { 
     1740        if ( $handle = opendir( $origin ) ) { 
     1741                while( $file = readdir( $handle ) ) { 
     1742                        $path_from = "$origin/$file"; 
     1743                        if ( is_dir( $path_from ) ) 
    17371744                                continue; 
    1738                         if (! @copy("$default_dir/images/$image", "$site_dir/images/$image")) 
    1739                                 return; 
    1740                         chmod("$site_dir/images/$image", 0777); 
     1745                        $path_to = "$target/$file"; 
     1746                        if ( ! copy( $path_from, $path_to ) ) 
     1747                                return false; 
     1748                        chmod( $path_to , $mode ); 
    17411749                } 
     1750                closedir( $handle ); 
    17421751        } 
    1743         @closedir($images_dir); 
     1752        return true; 
    17441753} 
    17451754 
    17461755// Create a site theme from the default theme.