X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/1c09677af04c9e37714e09b73eb9dbc5b2e3eb13..cd3609994b39a094ff7528b93f55631bb213fd7f:/wp-admin/includes/class-wp-filesystem-ftpsockets.php diff --git a/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/wp-admin/includes/class-wp-filesystem-ftpsockets.php index a72abaa7..2e9fbd69 100644 --- a/wp-admin/includes/class-wp-filesystem-ftpsockets.php +++ b/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -19,7 +19,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { var $errors = null; var $options = array(); - function WP_Filesystem_ftpsockets($opt = '') { + function __construct($opt = '') { $this->method = 'ftpsockets'; $this->errors = new WP_Error(); @@ -39,7 +39,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { else $this->options['hostname'] = $opt['hostname']; - if ( isset($opt['base']) && ! empty($opt['base']) ) + if ( ! empty($opt['base']) ) $this->wp_base = $opt['base']; // Check if the options provided are OK. @@ -115,14 +115,9 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { return explode("\n", $this->get_contents($file) ); } - function put_contents($file, $contents, $type = '' ) { - if ( empty($type) ) - $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; - - $this->ftp->SetType($type); - + function put_contents($file, $contents, $mode = false ) { $temp = wp_tempnam( $file ); - if ( ! $temphandle = fopen($temp, 'w+') ) { + if ( ! $temphandle = @fopen($temp, 'w+') ) { unlink($temp); return false; } @@ -130,10 +125,16 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { fwrite($temphandle, $contents); fseek($temphandle, 0); //Skip back to the start of the file being written to + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; + $this->ftp->SetType($type); + $ret = $this->ftp->fput($file, $temphandle); fclose($temphandle); unlink($temp); + + $this->chmod($file, $mode); + return $ret; } @@ -153,7 +154,6 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { } function chmod($file, $mode = false, $recursive = false ) { - if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; @@ -163,16 +163,15 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { return false; } - if ( ! $recursive || ! $this->is_dir($file) ) { - return $this->ftp->chmod($file, $mode); + // chmod any sub-objects if recursive. + if ( $recursive && $this->is_dir($file) ) { + $filelist = $this->dirlist($file); + foreach ( (array)$filelist as $filename => $filemeta ) + $this->chmod($file . '/' . $filename, $mode, $recursive); } - //Is a directory, and we want recursive - $filelist = $this->dirlist($file); - foreach ( $filelist as $filename ) - $this->chmod($file . '/' . $filename, $mode, $recursive); - - return true; + // chmod the file or directory + return $this->ftp->chmod($file, $mode); } function chown($file, $owner, $recursive = false ) { @@ -194,7 +193,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { return $dir[$file]['group']; } - function copy($source, $destination, $overwrite = false ) { + function copy($source, $destination, $overwrite = false, $mode = false) { if ( ! $overwrite && $this->exists($destination) ) return false; @@ -202,17 +201,17 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { if ( false === $content ) return false; - return $this->put_contents($destination, $content); + return $this->put_contents($destination, $content, $mode); } function move($source, $destination, $overwrite = false ) { return $this->ftp->rename($source, $destination); } - function delete($file, $recursive = false ) { + function delete($file, $recursive = false, $type = false) { if ( empty($file) ) return false; - if ( $this->is_file($file) ) + if ( 'f' == $type || $this->is_file($file) ) return $this->ftp->delete($file); if ( !$recursive ) return $this->ftp->rmdir($file); @@ -225,7 +224,11 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { } function is_file($file) { - return $this->is_dir($file) ? false : true; + if ( $this->is_dir($file) ) + return false; + if ( $this->exists($file) ) + return true; + return false; } function is_dir($path) { @@ -264,6 +267,10 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { } function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) { + $path = untrailingslashit($path); + if ( empty($path) ) + return false; + if ( ! $this->ftp->mkdir($path) ) return false; if ( ! $chmod ) @@ -277,10 +284,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { } function rmdir($path, $recursive = false ) { - if ( ! $recursive ) - return $this->ftp->rmdir($path); - - return $this->ftp->mdel($path); + $this->delete($path, $recursive); } function dirlist($path = '.', $include_hidden = true, $recursive = false ) { @@ -292,7 +296,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { } $list = $this->ftp->dirlist($path); - if ( ! $list ) + if ( empty($list) && !$this->exists($path) ) return false; $ret = array(); @@ -323,5 +327,3 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base { $this->ftp->quit(); } } - -?>