WordPress.org

Make WordPress Core

Ticket #16937: 16937.patch

File 16937.patch, 3.2 KB (added by hakre, 7 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.