web/wp-admin/includes/class-wp-filesystem-ssh2.php
changeset 194 32102edaa81b
parent 136 bde1974c263b
--- a/web/wp-admin/includes/class-wp-filesystem-ssh2.php	Thu Sep 16 15:45:36 2010 +0000
+++ b/web/wp-admin/includes/class-wp-filesystem-ssh2.php	Mon Nov 19 18:26:13 2012 +0100
@@ -48,7 +48,7 @@
 	var $errors = array();
 	var $options = array();
 
-	function WP_Filesystem_SSH2($opt='') {
+	function __construct($opt='') {
 		$this->method = 'ssh2';
 		$this->errors = new WP_Error();
 
@@ -73,7 +73,7 @@
 		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.
@@ -160,14 +160,18 @@
 		return file('ssh2.sftp://' . $this->sftp_link . '/' . $file);
 	}
 
-	function put_contents($file, $contents, $type = '' ) {
+	function put_contents($file, $contents, $mode = false ) {
 		$file = ltrim($file, '/');
-		return false !== file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents);
+		$ret = file_put_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file, $contents);
+
+		$this->chmod($file, $mode);
+
+		return false !== $ret;
 	}
 
 	function cwd() {
 		$cwd = $this->run_command('pwd');
-		if( $cwd )
+		if ( $cwd )
 			$cwd = trailingslashit($cwd);
 		return $cwd;
 	}
@@ -234,28 +238,28 @@
 		return $grouparray['name'];
 	}
 
-	function copy($source, $destination, $overwrite = false ) {
-		if( ! $overwrite && $this->exists($destination) )
+	function copy($source, $destination, $overwrite = false, $mode = false) {
+		if ( ! $overwrite && $this->exists($destination) )
 			return false;
 		$content = $this->get_contents($source);
-		if( false === $content)
+		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 @ssh2_sftp_rename($this->link, $source, $destination);
 	}
 
-	function delete($file, $recursive = false) {
-		if ( $this->is_file($file) )
+	function delete($file, $recursive = false, $type = false) {
+		if ( 'f' == $type || $this->is_file($file) )
 			return ssh2_sftp_unlink($this->sftp_link, $file);
 		if ( ! $recursive )
 			 return ssh2_sftp_rmdir($this->sftp_link, $file);
 		$filelist = $this->dirlist($file);
 		if ( is_array($filelist) ) {
 			foreach ( $filelist as $filename => $fileinfo) {
-				$this->delete($file . '/' . $filename, $recursive);
+				$this->delete($file . '/' . $filename, $recursive, $fileinfo['type']);
 			}
 		}
 		return ssh2_sftp_rmdir($this->sftp_link, $file);
@@ -302,11 +306,14 @@
 	}
 
 	function touch($file, $time = 0, $atime = 0) {
-		//Not implmented.
+		//Not implemented.
 	}
 
 	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
 		$path = untrailingslashit($path);
+		if ( empty($path) )
+			return false;
+
 		if ( ! $chmod )
 			$chmod = FS_CHMOD_DIR;
 		if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) )