WordPress.org

Make WordPress Core

Ticket #23845: wp-filesystem-ftpext.patch

File wp-filesystem-ftpext.patch, 1.4 KB (added by Przemyslaw Plewa, 13 months ago)

patch

  • wp-admin/includes/class-wp-filesystem-ftpext.php

     
    4747 
    4848                if ( ! empty($opt['base']) ) 
    4949                        $this->wp_base = $opt['base']; 
     50                elseif (defined('FTP_BASE')) 
     51                        $this->wp_base = trailingslashit(FTP_BASE); 
     52                         
     53                 
    5054 
    5155                // Check if the options provided are OK. 
    5256                if ( empty($opt['username']) ) 
     
    8488                @ftp_pasv( $this->link, true ); 
    8589                if ( @ftp_get_option($this->link, FTP_TIMEOUT_SEC) < FS_TIMEOUT ) 
    8690                        @ftp_set_option($this->link, FTP_TIMEOUT_SEC, FS_TIMEOUT); 
    87  
     91                 
     92                if(isset($this->wp_base)) 
     93                        $this->chdir($this->wp_base); 
    8894                return true; 
    8995        } 
    9096 
     
    140146                        $cwd = trailingslashit($cwd); 
    141147                return $cwd; 
    142148        } 
     149         
     150        function strict_wp_base($dir) { 
     151                if($this->wp_base) { 
     152                        $_dir = trailingslashit($dir); 
     153                        if(substr($_dir,0,strlen($this->base))!=$this->wp_base) { 
     154                                if(substr($dir,0,1)!='/') { 
     155                                        //make absolute path if is not 
     156                                        $cwd = trailingslashit($this->cwd()); 
     157                                        $_dir = trailingslashit($cwd.$dir); 
     158                                } 
     159                                if(substr($_dir,0,strlen($this->wp_base))!=$this->wp_base) { 
     160                                        //if directory doesn't contain in wp_base, add force it 
     161                                        $dir = $this->wp_base.$_dir; 
     162                                } 
     163                        }  
     164                } 
     165                return $dir; 
     166        }  
     167         
    143168        function chdir($dir) { 
     169                $dir = $this->strict_wp_base($dir); 
    144170                return @ftp_chdir($this->link, $dir); 
    145171        } 
    146172        function chgrp($file, $group, $recursive = false ) {