WordPress.org

Make WordPress Core

Ticket #14781: 14781_2.diff

File 14781_2.diff, 1.3 KB (added by edwardw, 8 years ago)

Refresh of existing patch

  • wp-admin/includes/class-wp-upgrader.php

     
    144144                if ( $wp_filesystem->is_dir($working_dir) )
    145145                        $wp_filesystem->delete($working_dir, true);
    146146
    147                 // Unzip package to working directory
    148                 $result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice?
     147                $extension = pathinfo($package, PATHINFO_EXTENSION);
     148               
     149                // Make uploading a PHP file instead of a zip archive possible
     150                if ( $extension == 'php' ) {
     151                        // Create a new folder
     152                        mkdir($working_dir);
     153                       
     154                        // Copy the PHP file into the new foler
     155                        $result = rename($package, $working_dir . '/' . basename($package));
     156                } else {
     157                        // Unzip package to working directory
     158                        $result = unzip_file($package, $working_dir); //TODO optimizations, Copy when Move/Rename would suffice?
     159                       
     160                        // Once extracted, delete the package if required.
     161                        if ( $delete_package )
     162                                unlink($package);
     163                }
    149164
    150                 // Once extracted, delete the package if required.
    151                 if ( $delete_package )
    152                         unlink($package);
    153 
    154165                if ( is_wp_error($result) ) {
    155166                        $wp_filesystem->delete($working_dir, true);
    156167                        if ( 'incompatible_archive' == $result->get_error_code() ) {