Make WordPress Core

Changeset 17525


Ignore:
Timestamp:
03/22/2011 12:04:15 AM (15 years ago)
Author:
dd32
Message:

Optimisations to WP_Filesystem; Pass known information to called functions. Props aldenta (John Ford) for investigation and patch. See #10913

Location:
trunk/wp-admin/includes
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-admin/includes/class-wp-filesystem-direct.php

    r15590 r17525  
    194194        }
    195195
    196         function copy($source, $destination, $overwrite = false) {
     196        function copy($source, $destination, $overwrite = false, $mode = false) {
    197197                if ( ! $overwrite && $this->exists($destination) )
    198198                        return false;
    199199
    200                 return copy($source, $destination);
     200                $rtval = copy($source, $destination);
     201                if ( $mode )
     202                        $this->chmod($destination, $mode);
     203                return $rtval;
    201204        }
    202205
     
    217220        }
    218221
    219         function delete($file, $recursive = false) {
     222        function delete($file, $recursive = false, $type = false) {
    220223                if ( empty($file) ) //Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
    221224                        return false;
    222225                $file = str_replace('\\', '/', $file); //for win32, occasional problems deleteing files otherwise
    223226
    224                 if ( $this->is_file($file) )
     227                if ( 'f' == $type || $this->is_file($file) )
    225228                        return @unlink($file);
    226229                if ( ! $recursive && $this->is_dir($file) )
     
    234237                if ( is_array($filelist) ) //false if no files, So check first.
    235238                        foreach ($filelist as $filename => $fileinfo)
    236                                 if ( ! $this->delete($file . $filename, $recursive) )
     239                                if ( ! $this->delete($file . $filename, $recursive, $fileinfo['type']) )
    237240                                        $retval = false;
    238241
  • trunk/wp-admin/includes/class-wp-filesystem-ftpext.php

    r15086 r17525  
    184184                return $dir[$file]['group'];
    185185        }
    186         function copy($source, $destination, $overwrite = false ) {
     186        function copy($source, $destination, $overwrite = false, $mode = false) {
    187187                if ( ! $overwrite && $this->exists($destination) )
    188188                        return false;
     
    190190                if ( false === $content)
    191191                        return false;
    192                 return $this->put_contents($destination, $content);
     192                return $this->put_contents($destination, $content, $mode);
    193193        }
    194194        function move($source, $destination, $overwrite = false) {
     
    196196        }
    197197
    198         function delete($file, $recursive = false ) {
     198        function delete($file, $recursive = false, $type = false) {
    199199                if ( empty($file) )
    200200                        return false;
    201                 if ( $this->is_file($file) )
     201                if ( 'f' == $type || $this->is_file($file) )
    202202                        return @ftp_delete($this->link, $file);
    203203                if ( !$recursive )
     
    207207                if ( !empty($filelist) )
    208208                        foreach ( $filelist as $delete_file )
    209                                 $this->delete( trailingslashit($file) . $delete_file['name'], $recursive);
     209                                $this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] );
    210210                return @ftp_rmdir($this->link, $file);
    211211        }
  • trunk/wp-admin/includes/class-wp-filesystem-ftpsockets.php

    r13770 r17525  
    194194        }
    195195
    196         function copy($source, $destination, $overwrite = false ) {
     196        function copy($source, $destination, $overwrite = false, $mode = false) {
    197197                if ( ! $overwrite && $this->exists($destination) )
    198198                        return false;
     
    202202                        return false;
    203203
    204                 return $this->put_contents($destination, $content);
     204                return $this->put_contents($destination, $content, $mode);
    205205        }
    206206
     
    209209        }
    210210
    211         function delete($file, $recursive = false ) {
     211        function delete($file, $recursive = false, $type = false) {
    212212                if ( empty($file) )
    213213                        return false;
    214                 if ( $this->is_file($file) )
     214                if ( 'f' == $type || $this->is_file($file) )
    215215                        return $this->ftp->delete($file);
    216216                if ( !$recursive )
  • trunk/wp-admin/includes/class-wp-filesystem-ssh2.php

    r13770 r17525  
    239239        }
    240240
    241         function copy($source, $destination, $overwrite = false ) {
     241        function copy($source, $destination, $overwrite = false, $mode = false) {
    242242                if ( ! $overwrite && $this->exists($destination) )
    243243                        return false;
     
    245245                if ( false === $content)
    246246                        return false;
    247                 return $this->put_contents($destination, $content);
     247                return $this->put_contents($destination, $content, $mode);
    248248        }
    249249
     
    252252        }
    253253
    254         function delete($file, $recursive = false) {
    255                 if ( $this->is_file($file) )
     254        function delete($file, $recursive = false, $type = false) {
     255                if ( 'f' == $type || $this->is_file($file) )
    256256                        return ssh2_sftp_unlink($this->sftp_link, $file);
    257257                if ( ! $recursive )
     
    260260                if ( is_array($filelist) ) {
    261261                        foreach ( $filelist as $filename => $fileinfo) {
    262                                 $this->delete($file . '/' . $filename, $recursive);
     262                                $this->delete($file . '/' . $filename, $recursive, $fileinfo['type']);
    263263                        }
    264264                }
  • trunk/wp-admin/includes/file.php

    r17200 r17525  
    8181        $siteurl = get_option( 'siteurl' );
    8282        if ( $home != '' && $home != $siteurl ) {
    83                 $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
    84                 $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
    85                 $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
     83                $wp_path_rel_to_home = str_replace($home, '', $siteurl); /* $siteurl - $home */
     84                $pos = strpos($_SERVER["SCRIPT_FILENAME"], $wp_path_rel_to_home);
     85                $home_path = substr($_SERVER["SCRIPT_FILENAME"], 0, $pos);
    8686                $home_path = trailingslashit( $home_path );
    8787        } else {
     
    774774        foreach ( (array) $dirlist as $filename => $fileinfo ) {
    775775                if ( 'f' == $fileinfo['type'] ) {
    776                         if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) ) {
     776                        if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) ) {
    777777                                // If copy failed, chmod file to 0644 and try again.
    778778                                $wp_filesystem->chmod($to . $filename, 0644);
    779                                 if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true) )
     779                                if ( ! $wp_filesystem->copy($from . $filename, $to . $filename, true, FS_CHMOD_FILE) )
    780780                                        return new WP_Error('copy_failed', __('Could not copy file.'), $to . $filename);
    781781                        }
    782                         $wp_filesystem->chmod($to . $filename, FS_CHMOD_FILE);
    783782                } elseif ( 'd' == $fileinfo['type'] ) {
    784783                        if ( !$wp_filesystem->is_dir($to . $filename) ) {
Note: See TracChangeset for help on using the changeset viewer.