WordPress.org

Make WordPress Core

Changeset 7641


Ignore:
Timestamp:
04/13/2008 04:04:57 AM (10 years ago)
Author:
matt
Message:

Direct file system manip fixes, should fix .svn upgrade problem. Hat tip: DD32.

File:
1 edited

Legend:

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

    r7415 r7641  
    2727    }
    2828    function put_contents($file,$contents,$mode=false,$type=''){
    29         $fp=@fopen($file,'w'.$type);
    30         if (!$fp)
     29        if ( ! ($fp = @fopen($file,'w'.$type)) )
    3130            return false;
    3231        @fwrite($fp,$contents);
     
    3736    function cwd(){
    3837        return @getcwd();
     38    }
     39    function chdir($dir){
     40        return @chdir($dir);
    3941    }
    4042    function chgrp($file,$group,$recursive=false){
     
    4648            return @chgrp($file,$group);
    4749        //Is a directory, and we want recursive
     50        $file = trailingshashit($file);
    4851        $filelist = $this->dirlist($file);
    49         foreach($filelist as $filename){
    50             $this->chgrp($file.'/'.$filename,$group,$recursive);
    51         }
     52        foreach($filelist as $filename)
     53            $this->chgrp($file . $filename, $group, $recursive);
     54
    5255        return true;
    5356    }
     
    6265            return @chmod($file,$mode);
    6366        //Is a directory, and we want recursive
     67        $file = trailingshashit($file);
    6468        $filelist = $this->dirlist($file);
    65         foreach($filelist as $filename){
    66             $this->chmod($file.'/'.$filename,$mode,$recursive);
    67         }
     69        foreach($filelist as $filename)
     70            $this->chmod($file . $filename, $mode, $recursive);
     71
    6872        return true;
    6973    }
     
    8387    }
    8488    function owner($file){
    85         $owneruid=@fileowner($file);
     89        $owneruid = @fileowner($file);
    8690        if( ! $owneruid )
    8791            return false;
    8892        if( !function_exists('posix_getpwuid') )
    8993            return $owneruid;
    90         $ownerarray=posix_getpwuid($owneruid);
     94        $ownerarray = posix_getpwuid($owneruid);
    9195        return $ownerarray['name'];
    9296    }
     
    164168    }
    165169    function group($file){
    166         $gid=@filegroup($file);
     170        $gid = @filegroup($file);
    167171        if( ! $gid )
    168172            return false;
    169173        if( !function_exists('posix_getgrgid') )
    170174            return $gid;
    171         $grouparray=posix_getgrgid($gid);
     175        $grouparray = posix_getgrgid($gid);
    172176        return $grouparray['name'];
    173177    }
     
    180184
    181185    function move($source,$destination,$overwrite=false){
    182         //Possible to use rename()
     186        //Possible to use rename()?
    183187        if( $this->copy($source,$destination,$overwrite) && $this->exists($destination) ){
    184188            $this->delete($source);
     
    189193    }
    190194
    191     function delete($file,$recursive=false){
     195    function delete($file, $recursive=false){
    192196        $file = str_replace('\\','/',$file); //for win32, occasional problems deleteing files otherwise
    193197
    194198        if( $this->is_file($file) )
    195199            return @unlink($file);
    196 
    197200        if( !$recursive && $this->is_dir($file) )
    198201            return @rmdir($file);
    199202
    200         $filelist = $this->dirlist($file);
    201         if( ! $filelist )
    202             return true; //No files exist, Say we've deleted them
     203        //At this point its a folder, and we're in recursive mode
     204        $file = trailingslashit($file);
     205        $filelist = $this->dirlist($file, true);
    203206
    204207        $retval = true;
    205         foreach($filelist as $filename=>$fileinfo){
    206             if( ! $this->delete($file.'/'.$filename,$recursive) )
    207                 $retval = false;
    208         }
     208        if( is_array($filelist) ) //false if no files, So check first.
     209            foreach($filelist as $filename=>$fileinfo)
     210                if( ! $this->delete($file . $filename, $recursive) )
     211                    $retval = false;
     212
    209213        if( ! @rmdir($file) )
    210214            return false;
     
    225229
    226230    function is_readable($file){
    227             return @is_readable($file);
     231        return @is_readable($file);
    228232    }
    229233
     
    243247    }
    244248
    245     function touch($file,$time=0,$atime=0){
    246         if($time==0)
     249    function touch($file, $time = 0, $atime = 0){
     250        if($time == 0)
    247251            $time = time();
    248         if($atime==0)
     252        if($atime == 0)
    249253            $atime = time();
    250254        return @touch($file,$time,$atime);
    251255    }
    252256
    253     function mkdir($path,$chmod=false,$chown=false,$chgrp=false){
     257    function mkdir($path, $chmod = false, $chown = false, $chgrp = false){
    254258        if( ! $chmod)
    255259            $chmod = $this->permission;
     
    265269
    266270    function rmdir($path,$recursive=false){
     271        //Currently unused and untested, Use delete() instead.
    267272        if( ! $recursive )
    268273            return @rmdir($path);
     
    293298            $struc['name']      = $entry;
    294299
     300            if( '.' == $struc['name'] || '..' == $struc['name'] )
     301                continue; //Do not care about these folders.
    295302            if( '.' == $struc['name'][0] && !$incdot)
    296303                continue;
     
    308315            $struc['time']      = date('h:i:s',$struc['lastmodunix']);
    309316            $struc['type']      = $this->is_dir($path.'/'.$entry) ? 'd' : 'f';
     317
    310318            if ('d' == $struc['type'] ){
    311                 $struc['files'] = array();
    312 
    313                 if( $incdot ){
    314                     //We're including the doted starts
    315                     if( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
    316                         if ($recursive)
    317                             $struc['files'] = $this->dirlist($path.'/'.$struc['name'],$incdot,$recursive);
    318                     }
    319                 } else { //No dots
    320                     if ($recursive)
    321                         $struc['files'] = $this->dirlist($path.'/'.$struc['name'],$incdot,$recursive);
    322                 }
     319                if( $recursive )
     320                    $struc['files'] = $this->dirlist($path.'/'.$struc['name'], $incdot, $recursive);
     321                else
     322                    $struc['files'] = array();
    323323            }
    324             //File
    325             $ret[$struc['name']] = $struc;
     324
     325            $ret[ $struc['name'] ] = $struc;
    326326        }
    327327        $dir->close();
Note: See TracChangeset for help on using the changeset viewer.