Changeset 9117

Show
Ignore:
Timestamp:
10/10/08 10:02:46 (2 months ago)
Author:
azaozz
Message:

Fix for "Unable to locate WordPress directory" on core update and PHPDoc for class-wp-filesystem-base.php, props DD32, fixes #7861

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/wp-admin/includes/class-wp-filesystem-base.php

    r8990 r9117  
    1313 */ 
    1414class WP_Filesystem_Base { 
     15    /** 
     16     * Whether to display debug data for the connection or not. 
     17     * 
     18     * @since 2.5 
     19     * @access public 
     20     * @var bool 
     21     */ 
    1522    var $verbose = false; 
     23    /** 
     24     * Cached list of local filepaths to maped remote filepaths. 
     25     * 
     26     * @since 2.7 
     27     * @access private 
     28     * @var array 
     29     */ 
    1630    var $cache = array(); 
    1731 
     32    /** 
     33     * The Access method of the current connection, Set automatically. 
     34     * 
     35     * @since 2.5 
     36     * @access public 
     37     * @var string 
     38     */ 
    1839    var $method = ''; 
    1940 
     41    /** 
     42     * Returns the path on the remote filesystem of ABSPATH 
     43     * 
     44     * @since 2.7 
     45     * @access public 
     46     * @return string The location of the remote path. 
     47     */ 
    2048    function abspath() { 
    2149        if ( defined('FTP_BASE') && strpos($this->method, 'ftp') !== false ) 
     
    2351        return $this->find_folder(ABSPATH); 
    2452    } 
     53    /** 
     54     * Returns the path on the remote filesystem of WP_CONTENT_DIR 
     55     * 
     56     * @since 2.7 
     57     * @access public 
     58     * @return string The location of the remote path. 
     59     */ 
    2560    function wp_content_dir() { 
    2661        if ( defined('FTP_CONTENT_DIR') && strpos($this->method, 'ftp') !== false ) 
     
    2863        return $this->find_folder(WP_CONTENT_DIR); 
    2964    } 
     65    /** 
     66     * Returns the path on the remote filesystem of WP_PLUGIN_DIR 
     67     * 
     68     * @since 2.7 
     69     * @access public 
     70     * 
     71     * @return string The location of the remote path. 
     72     */ 
    3073    function wp_plugins_dir() { 
    3174        if ( defined('FTP_PLUGIN_DIR') && strpos($this->method, 'ftp') !== false ) 
     
    3376        return $this->find_folder(WP_PLUGIN_DIR); 
    3477    } 
     78    /** 
     79     * Returns the path on the remote filesystem of the Themes Directory 
     80     * 
     81     * @since 2.7 
     82     * @access public 
     83     * 
     84     * @return string The location of the remote path. 
     85     */ 
    3586    function wp_themes_dir() { 
    3687        return $this->wp_content_dir() . '/themes'; 
    3788    } 
    38     //Back compat: use abspath() or wp_*_dir 
     89     
     90    /** 
     91     * Locates a folder on the remote filesystem. 
     92     * 
     93     * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. 
     94     * 
     95     * @since 2.5 
     96     * @deprecated 2.7 
     97     * @access public 
     98     * 
     99     * @param string $base The folder to start searching from 
     100     * @param bool $echo True to display debug information 
     101     * @return string The location of the remote path. 
     102     */ 
    39103    function find_base_dir($base = '.', $echo = false) { 
     104        _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); 
    40105        $this->verbose = $echo; 
    41106        return $this->abspath(); 
    42107    } 
    43     //Back compat: use ::abspath() or ::wp_*_dir 
     108    /** 
     109     * Locates a folder on the remote filesystem. 
     110     * 
     111     * Deprecated; use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead. 
     112     * 
     113     * @since 2.5 
     114     * @deprecated 2.7 
     115     * @access public 
     116     * 
     117     * @param string $base The folder to start searching from 
     118     * @param bool $echo True to display debug information 
     119     * @return string The location of the remote path. 
     120     */ 
    44121    function get_base_dir($base = '.', $echo = false) { 
     122        _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); 
    45123        $this->verbose = $echo; 
    46124        return $this->abspath(); 
    47125    } 
    48126 
     127    /** 
     128     * Locates a folder on the remote filesystem. 
     129     * 
     130     * Assumes that on Windows systems, Stripping off the Drive letter is OK 
     131     * Sanitizes \\ to / in windows filepaths. 
     132     * 
     133     * @since 2.7 
     134     * @access public 
     135     *  
     136     * @param string $folder the folder to locate 
     137     * @return string The location of the remote path. 
     138     */ 
    49139    function find_folder($folder) { 
    50         $folder = str_replace('\\', '/', $folder); //Windows Sanitiation 
     140 
     141        $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows driveletter if its there. 
     142        $folder = str_replace('\\', '/', $folder); //Windows path sanitiation 
     143 
    51144        if ( isset($this->cache[ $folder ] ) ) 
    52145            return $this->cache[ $folder ]; 
     
    61154    } 
    62155 
    63     // Assumes $folder is windows sanitized; 
    64     // Assumes that the drive letter is safe to be stripped off, Should not be a problem for windows servers. 
     156    /** 
     157     * Locates a folder on the remote filesystem. 
     158     * 
     159     * Expects Windows sanitized path 
     160     * 
     161     * @since 2.7 
     162     * @access private 
     163     *  
     164     * @param string $folder the folder to locate 
     165     * @param string $base the folder to start searching from 
     166     * @param bool $loop if the function has recursed, Internal use only 
     167     * @return string The location of the remote path. 
     168     */ 
    65169    function search_for_folder($folder, $base = '.', $loop = false ) { 
    66170        if ( empty( $base ) || '.' == $base ) 
    67171            $base = trailingslashit($this->cwd()); 
    68172 
    69         $folder = preg_replace('|^([a-z]{1}):|i', '', $folder); //Strip out windows driveletter if its there. 
     173        $folder = untrailingslashit($folder); 
    70174 
    71175        $folder_parts = explode('/', $folder); 
     
    105209    } 
    106210 
    107     //Common Helper functions. 
     211    /** 
     212     * Returns the *nix style file permissions for a file 
     213     * 
     214     * From the PHP documentation page for fileperms() 
     215     * 
     216     * @link http://docs.php.net/fileperms 
     217     * @since 2.5 
     218     * @access public 
     219     * 
     220     * @param string $file string filename 
     221     * @return int octal representation of permissions 
     222     */ 
    108223    function gethchmod($file){ 
    109         //From the PHP.net page for ...? 
    110224        $perms = $this->getchmod($file); 
    111225        if (($perms & 0xC000) == 0xC000) // Socket 
     
    148262        return $info; 
    149263    } 
     264 
     265    /** 
     266     * Converts *nix style file permissions to a octal number. 
     267     * 
     268     * Converts '-rw-r--r--' to 0644 
     269     * From "info at rvgate dot nl"'s comment on the PHP documentation for chmod() 
     270     * 
     271     * @link http://docs.php.net/manual/en/function.chmod.php#49614 
     272     * @since 2.5 
     273     * @access public 
     274     * 
     275     * @param string $mode string *nix style file permission 
     276     * @return int octal representation 
     277     */ 
    150278    function getnumchmodfromh($mode) { 
    151         $realmode = ""
    152         $legal =  array("", "w", "r", "x", "-"); 
    153         $attarray = preg_split("//", $mode); 
     279        $realmode = ''
     280        $legal =  array('', 'w', 'r', 'x', '-'); 
     281        $attarray = preg_split('//', $mode); 
    154282 
    155283        for($i=0; $i < count($attarray); $i++) 
     
    169297 
    170298    /** 
    171     * Determines if the string provided contains binary characters. 
    172     * 
    173     * @since 2.7 
    174     * @package WordPress 
    175     * @subpackage WP_Filesystem 
    176     * 
    177     * @param string $text String to test against 
    178     * 
    179     */ 
     299     * Determines if the string provided contains binary characters. 
     300     * 
     301     * @since 2.7 
     302     * @access private 
     303     * 
     304     * @param string $text String to test against 
     305     * @return bool true if string is binary, false otherwise 
     306     */ 
    180307    function is_binary( $text ) { 
    181308        return (bool) preg_match('|[^\x20-\x7E]|', $text); //chr(32)..chr(127)