wp/wp-admin/includes/class-wp-filesystem-ftpext.php
changeset 5 5e2f62d02dcd
parent 0 d970ebf37754
child 7 cf61fcea0001
--- a/wp/wp-admin/includes/class-wp-filesystem-ftpext.php	Mon Jun 08 16:11:51 2015 +0000
+++ b/wp/wp-admin/includes/class-wp-filesystem-ftpext.php	Tue Jun 09 03:35:32 2015 +0200
@@ -9,24 +9,22 @@
 /**
  * WordPress Filesystem Class for implementing FTP.
  *
- * @since 2.5
+ * @since 2.5.0
  * @package WordPress
  * @subpackage Filesystem
  * @uses WP_Filesystem_Base Extends class
  */
 class WP_Filesystem_FTPext extends WP_Filesystem_Base {
-	var $link;
-	var $errors = null;
-	var $options = array();
+	public $link;
 
-	function __construct($opt='') {
+	public function __construct($opt='') {
 		$this->method = 'ftpext';
 		$this->errors = new WP_Error();
 
 		// Check if possible to use ftp functions.
 		if ( ! extension_loaded('ftp') ) {
 			$this->errors->add('no_ftp_ext', __('The ftp PHP extension is not available'));
-			return false;
+			return;
 		}
 
 		// This Class uses the timeout on a per-connection basis, Others use it on a per-action basis.
@@ -44,9 +42,6 @@
 		else
 			$this->options['hostname'] = $opt['hostname'];
 
-		if ( ! empty($opt['base']) )
-			$this->wp_base = $opt['base'];
-
 		// Check if the options provided are OK.
 		if ( empty($opt['username']) )
 			$this->errors->add('empty_username', __('FTP username is required'));
@@ -63,7 +58,7 @@
 			$this->options['ssl'] = true;
 	}
 
-	function connect() {
+	public function connect() {
 		if ( isset($this->options['ssl']) && $this->options['ssl'] && function_exists('ftp_ssl_connect') )
 			$this->link = @ftp_ssl_connect($this->options['hostname'], $this->options['port'], FS_CONNECT_TIMEOUT);
 		else
@@ -87,7 +82,11 @@
 		return true;
 	}
 
-	function get_contents( $file ) {
+	/**
+	 * @param string $file
+	 * @return false|string
+	 */
+	public function get_contents( $file ) {
 		$tempfile = wp_tempnam($file);
 		$temp = fopen($tempfile, 'w+');
 
@@ -108,11 +107,21 @@
 		return $contents;
 	}
 
-	function get_contents_array($file) {
+	/**
+	 * @param string $file
+	 * @return array
+	 */
+	public function get_contents_array($file) {
 		return explode("\n", $this->get_contents($file));
 	}
 
-	function put_contents($file, $contents, $mode = false ) {
+	/**
+	 * @param string $file
+	 * @param string $contents
+	 * @param bool|int $mode
+	 * @return bool
+	 */
+	public function put_contents($file, $contents, $mode = false ) {
 		$tempfile = wp_tempnam($file);
 		$temp = fopen( $tempfile, 'wb+' );
 		if ( ! $temp )
@@ -143,22 +152,31 @@
 		return $ret;
 	}
 
-	function cwd() {
+	/**
+	 * @return string
+	 */
+	public function cwd() {
 		$cwd = @ftp_pwd($this->link);
 		if ( $cwd )
 			$cwd = trailingslashit($cwd);
 		return $cwd;
 	}
 
-	function chdir($dir) {
+	/**
+	 * @param string $dir
+	 * @return bool
+	 */
+	public function chdir($dir) {
 		return @ftp_chdir($this->link, $dir);
 	}
 
-	function chgrp($file, $group, $recursive = false ) {
-		return false;
-	}
-
-	function chmod($file, $mode = false, $recursive = false) {
+	/**
+	 * @param string $file
+	 * @param int $mode
+	 * @param bool $recursive
+	 * @return bool
+	 */
+	public function chmod($file, $mode = false, $recursive = false) {
 		if ( ! $mode ) {
 			if ( $this->is_file($file) )
 				$mode = FS_CHMOD_FILE;
@@ -181,22 +199,40 @@
 		return (bool)@ftp_chmod($this->link, $mode, $file);
 	}
 
-	function owner($file) {
+	/**
+	 * @param string $file
+	 * @return string
+	 */
+	public function owner($file) {
 		$dir = $this->dirlist($file);
 		return $dir[$file]['owner'];
 	}
-
-	function getchmod($file) {
+	/**
+	 * @param string $file
+	 * @return string
+	 */
+	public function getchmod($file) {
 		$dir = $this->dirlist($file);
 		return $dir[$file]['permsn'];
 	}
-
-	function group($file) {
+	/**
+	 * @param string $file
+	 * @return string
+	 */
+	public function group($file) {
 		$dir = $this->dirlist($file);
 		return $dir[$file]['group'];
 	}
 
-	function copy($source, $destination, $overwrite = false, $mode = false) {
+	/**
+	 *
+	 * @param string $source
+	 * @param string $destination
+	 * @param bool   $overwrite
+	 * @param string|bool $mode
+	 * @return bool
+	 */
+	public function copy($source, $destination, $overwrite = false, $mode = false) {
 		if ( ! $overwrite && $this->exists($destination) )
 			return false;
 		$content = $this->get_contents($source);
@@ -204,12 +240,22 @@
 			return false;
 		return $this->put_contents($destination, $content, $mode);
 	}
-
-	function move($source, $destination, $overwrite = false) {
+	/**
+	 * @param string $source
+	 * @param string $destination
+	 * @param bool $overwrite
+	 * @return bool
+	 */
+	public function move($source, $destination, $overwrite = false) {
 		return ftp_rename($this->link, $source, $destination);
 	}
-
-	function delete($file, $recursive = false, $type = false) {
+	/**
+	 * @param string $file
+	 * @param bool $recursive
+	 * @param string $type
+	 * @return bool
+	 */
+	public function delete($file, $recursive = false, $type = false) {
 		if ( empty($file) )
 			return false;
 		if ( 'f' == $type || $this->is_file($file) )
@@ -223,17 +269,31 @@
 				$this->delete( trailingslashit($file) . $delete_file['name'], $recursive, $delete_file['type'] );
 		return @ftp_rmdir($this->link, $file);
 	}
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function exists($file) {
+		$list = @ftp_nlist($this->link, $file);
 
-	function exists($file) {
-		$list = @ftp_nlist($this->link, $file);
+		if ( empty( $list ) && $this->is_dir( $file ) ) {
+			return true; // File is an empty directory.
+		}
+
 		return !empty($list); //empty list = no file, so invert.
 	}
-
-	function is_file($file) {
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function is_file($file) {
 		return $this->exists($file) && !$this->is_dir($file);
 	}
-
-	function is_dir($path) {
+	/**
+	 * @param string $path
+	 * @return bool
+	 */
+	public function is_dir($path) {
 		$cwd = $this->cwd();
 		$result = @ftp_chdir($this->link, trailingslashit($path) );
 		if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) {
@@ -243,31 +303,57 @@
 		return false;
 	}
 
-	function is_readable($file) {
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function is_readable($file) {
+		return true;
+	}
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function is_writable($file) {
 		return true;
 	}
-
-	function is_writable($file) {
-		return true;
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function atime($file) {
+		return false;
 	}
-
-	function atime($file) {
+	/**
+	 * @param string $file
+	 * @return int
+	 */
+	public function mtime($file) {
+		return ftp_mdtm($this->link, $file);
+	}
+	/**
+	 * @param string $file
+	 * @return int
+	 */
+	public function size($file) {
+		return ftp_size($this->link, $file);
+	}
+	/**
+	 * @param string $file
+	 * @return bool
+	 */
+	public function touch($file, $time = 0, $atime = 0) {
 		return false;
 	}
 
-	function mtime($file) {
-		return ftp_mdtm($this->link, $file);
-	}
-
-	function size($file) {
-		return ftp_size($this->link, $file);
-	}
-
-	function touch($file, $time = 0, $atime = 0) {
-		return false;
-	}
-
-	function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
+	/**
+	 * @param string $path
+	 * @param mixed $chmod
+	 * @param mixed $chown
+	 * @param mixed $chgrp
+	 * @return bool
+	 */
+	public function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
 		$path = untrailingslashit($path);
 		if ( empty($path) )
 			return false;
@@ -275,18 +361,24 @@
 		if ( !@ftp_mkdir($this->link, $path) )
 			return false;
 		$this->chmod($path, $chmod);
-		if ( $chown )
-			$this->chown($path, $chown);
-		if ( $chgrp )
-			$this->chgrp($path, $chgrp);
 		return true;
 	}
 
-	function rmdir($path, $recursive = false) {
+	/**
+	 * @param string $path
+	 * @param bool $recursive
+	 * @return bool
+	 */
+	public function rmdir($path, $recursive = false) {
 		return $this->delete($path, $recursive);
 	}
 
-	function parselisting($line) {
+	/**
+	 * @staticvar bool $is_windows
+	 * @param string $line
+	 * @return string
+	 */
+	public function parselisting($line) {
 		static $is_windows;
 		if ( is_null($is_windows) )
 			$is_windows = stripos( ftp_systype($this->link), 'win') !== false;
@@ -359,7 +451,13 @@
 		return $b;
 	}
 
-	function dirlist($path = '.', $include_hidden = true, $recursive = false) {
+	/**
+	 * @param string $path
+	 * @param bool $include_hidden
+	 * @param bool $recursive
+	 * @return bool|array
+	 */
+	public function dirlist($path = '.', $include_hidden = true, $recursive = false) {
 		if ( $this->is_file($path) ) {
 			$limit_file = basename($path);
 			$path = dirname($path) . '/';
@@ -408,7 +506,7 @@
 		return $ret;
 	}
 
-	function __destruct() {
+	public function __destruct() {
 		if ( $this->link )
 			ftp_close($this->link);
 	}