X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/3f5685912e89eb3b0534acd85aa0946b1ca2bbe3..58f607a1de715c9bca69340a4d6fb9e1b9c2bed2:/wp-admin/includes/class-wp-filesystem-ftpext.php?ds=sidebyside diff --git a/wp-admin/includes/class-wp-filesystem-ftpext.php b/wp-admin/includes/class-wp-filesystem-ftpext.php index b8d5c9ae..df4ce0ad 100644 --- a/wp-admin/includes/class-wp-filesystem-ftpext.php +++ b/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -45,7 +45,7 @@ class WP_Filesystem_FTPext 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. @@ -92,7 +92,9 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { if ( empty($type) ) $type = FTP_BINARY; - $temp = tmpfile(); + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); + if ( ! $temp ) return false; @@ -106,25 +108,30 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { $contents .= fread($temp, 8192); fclose($temp); + unlink($tempfile); return $contents; } function get_contents_array($file) { 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; - $temp = tmpfile(); + function put_contents($file, $contents, $mode = false ) { + $tempfile = wp_tempnam($file); + $temp = fopen($tempfile, 'w+'); if ( ! $temp ) return false; fwrite($temp, $contents); fseek($temp, 0); //Skip back to the start of the file being written to + $type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII; $ret = @ftp_fput($this->link, $file, $temp, $type); fclose($temp); + unlink($tempfile); + + $this->chmod($file, $mode); + return $ret; } function cwd() { @@ -140,9 +147,6 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { return false; } function chmod($file, $mode = false, $recursive = false) { - if ( ! $this->exists($file) && ! $this->is_dir($file) ) - return false; - if ( ! $mode ) { if ( $this->is_file($file) ) $mode = FS_CHMOD_FILE; @@ -152,17 +156,17 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { return false; } - if ( ! $recursive || ! $this->is_dir($file) ) { - if ( ! function_exists('ftp_chmod') ) - return @ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); - return @ftp_chmod($this->link, $mode, $file); - } - //Is a directory, and we want recursive - $filelist = $this->dirlist($file); - foreach ( $filelist as $filename ) { - $this->chmod($file . '/' . $filename, $mode, $recursive); + // 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); } - return true; + + // chmod the file or directory + if ( ! function_exists('ftp_chmod') ) + return (bool)@ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file)); + return (bool)@ftp_chmod($this->link, $mode, $file); } function chown($file, $owner, $recursive = false ) { return false; @@ -243,10 +247,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { return false; } function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { - if ( !ftp_mkdir($this->link, $path) ) + if ( !@ftp_mkdir($this->link, $path) ) return false; - if ( ! $chmod ) - $chmod = FS_CHMOD_DIR; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); @@ -261,12 +263,15 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base { function parselisting($line) { static $is_windows; if ( is_null($is_windows) ) - $is_windows = strpos( strtolower(ftp_systype($this->link)), 'win') !== false; + $is_windows = stripos( ftp_systype($this->link), 'win') !== false; - if ( $is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|