Docs: Improve documentation for various WP_Filesystem_Base methods and extending classes.

Props jaydeep-rami, man4toman, SaeedFard, mukesh27, mohadeseghasemi, ebrahimzadeh, juiiee8487, SergeyBiryukov.
Fixes #42227, #46806, #46840. See #46543.
Built from https://develop.svn.wordpress.org/trunk@45226


git-svn-id: http://core.svn.wordpress.org/trunk@45035 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
Sergey Biryukov 2019-04-17 04:13:51 +00:00
parent 13345d12e9
commit 74e9c3d20d
6 changed files with 957 additions and 399 deletions

View File

@ -7,11 +7,12 @@
*/
/**
* Base WordPress Filesystem class for which Filesystem implementations extend
* Base WordPress Filesystem class which Filesystem implementations extend.
*
* @since 2.5.0
*/
class WP_Filesystem_Base {
/**
* Whether to display debug data for the connection.
*
@ -46,7 +47,7 @@ class WP_Filesystem_Base {
public $options = array();
/**
* Return the path on the remote filesystem of ABSPATH.
* Returns the path on the remote filesystem of ABSPATH.
*
* @since 2.7.0
*
@ -62,7 +63,7 @@ class WP_Filesystem_Base {
}
/**
* Return the path on the remote filesystem of WP_CONTENT_DIR.
* Returns the path on the remote filesystem of WP_CONTENT_DIR.
*
* @since 2.7.0
*
@ -73,7 +74,7 @@ class WP_Filesystem_Base {
}
/**
* Return the path on the remote filesystem of WP_PLUGIN_DIR.
* Returns the path on the remote filesystem of WP_PLUGIN_DIR.
*
* @since 2.7.0
*
@ -84,11 +85,12 @@ class WP_Filesystem_Base {
}
/**
* Return the path on the remote filesystem of the Themes Directory.
* Returns the path on the remote filesystem of the Themes Directory.
*
* @since 2.7.0
*
* @param string $theme The Theme stylesheet or template for the directory.
* @param string|false $theme Optional. The theme stylesheet or template for the directory.
* Default false.
* @return string The location of the remote path.
*/
public function wp_themes_dir( $theme = false ) {
@ -103,7 +105,7 @@ class WP_Filesystem_Base {
}
/**
* Return the path on the remote filesystem of WP_LANG_DIR.
* Returns the path on the remote filesystem of WP_LANG_DIR.
*
* @since 3.2.0
*
@ -114,7 +116,7 @@ class WP_Filesystem_Base {
}
/**
* Locate a folder on the remote filesystem.
* Locates a folder on the remote filesystem.
*
* @since 2.5.0
* @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() instead.
@ -136,7 +138,7 @@ class WP_Filesystem_Base {
}
/**
* Locate a folder on the remote filesystem.
* Locates a folder on the remote filesystem.
*
* @since 2.5.0
* @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead.
@ -157,10 +159,10 @@ class WP_Filesystem_Base {
}
/**
* Locate a folder on the remote filesystem.
* Locates a folder on the remote filesystem.
*
* Assumes that on Windows systems, Stripping off the Drive
* letter is OK Sanitizes \\ to / in windows filepaths.
* letter is OK Sanitizes \\ to / in Windows filepaths.
*
* @since 2.7.0
*
@ -229,7 +231,7 @@ class WP_Filesystem_Base {
}
/**
* Locate a folder on the remote filesystem.
* Locates a folder on the remote filesystem.
*
* Expects Windows sanitized path.
*
@ -267,9 +269,9 @@ class WP_Filesystem_Base {
/*
* Working from /home/ to /user/ to /wordpress/ see if that file exists within
* the current folder, If it's found, change into it and follow through looking
* for it. If it cant find WordPress down that route, it'll continue onto the next
* for it. If it can't find WordPress down that route, it'll continue onto the next
* folder level, and see if that matches, and so on. If it reaches the end, and still
* cant find it, it'll return false for the entire function.
* can't find it, it'll return false for the entire function.
*/
if ( isset( $files[ $key ] ) ) {
@ -311,7 +313,7 @@ class WP_Filesystem_Base {
}
/**
* Return the *nix-style file permissions for a file.
* Returns the *nix-style file permissions for a file.
*
* From the PHP documentation page for fileperms().
*
@ -366,18 +368,19 @@ class WP_Filesystem_Base {
}
/**
* Gets the permissions of the specified file or filepath in their octal format
* Gets the permissions of the specified file or filepath in their octal format.
*
* @since 2.5.0
* @param string $file
* @return string the last 3 characters of the octal number
*
* @param string $file Path to the file.
* @return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
return '777';
}
/**
* Convert *nix-style file permissions to a octal number.
* Converts *nix-style file permissions to a octal number.
*
* Converts '-rw-r--r--' to 0644
* From "info at rvgate dot nl"'s comment on the PHP documentation for chmod()
@ -417,187 +420,192 @@ class WP_Filesystem_Base {
}
/**
* Determine if the string provided contains binary characters.
* Determines if the string provided contains binary characters.
*
* @since 2.7.0
*
* @param string $text String to test against.
* @return bool true if string is binary, false otherwise.
* @return bool True if string is binary, false otherwise.
*/
public function is_binary( $text ) {
return (bool) preg_match( '|[^\x20-\x7E]|', $text ); // chr(32)..chr(127)
}
/**
* Change the ownership of a file / folder.
* Changes the owner of a file or directory.
*
* Default behavior is to do nothing, override this in your subclass, if desired.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @param mixed $owner A user name or number.
* @param bool $recursive Optional. If set True changes file owner recursivly. Defaults to False.
* @return bool Returns true on success or false on failure.
* @param string $file Path to the file or directory.
* @param string|int $owner A user name or number.
* @param bool $recursive Optional. If set to true, changes file owner recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chown( $file, $owner, $recursive = false ) {
return false;
}
/**
* Connect filesystem.
* Connects filesystem.
*
* @since 2.5.0
* @abstract
*
* @return bool True on success or false on failure (always true for WP_Filesystem_Direct).
* @return bool True on success, false on failure (always true for WP_Filesystem_Direct).
*/
public function connect() {
return true;
}
/**
* Read entire file into a string.
* Reads entire file into a string.
*
* @since 2.5.0
* @abstract
*
* @param string $file Name of the file to read.
* @return mixed|bool Returns the read data or false on failure.
* @return string|false Read data on success, false on failure.
*/
public function get_contents( $file ) {
return false;
}
/**
* Read entire file into an array.
* Reads entire file into an array.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @return array|bool the file contents in an array or false on failure.
* @return array|false File contents in an array on success, false on failure.
*/
public function get_contents_array( $file ) {
return false;
}
/**
* Write a string to a file.
* Writes a string to a file.
*
* @since 2.5.0
* @abstract
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int $mode Optional. The file permissions as octal number, usually 0644.
* @return bool False on failure.
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int|false $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
return false;
}
/**
* Get the current working directory.
* Gets the current working directory.
*
* @since 2.5.0
* @abstract
*
* @return string|bool The current working directory on success, or false on failure.
* @return string|false The current working directory on success, false on failure.
*/
public function cwd() {
return false;
}
/**
* Change current directory.
* Changes current directory.
*
* @since 2.5.0
* @abstract
*
* @param string $dir The new current directory.
* @return bool|string
* @return bool True on success, false on failure.
*/
public function chdir( $dir ) {
return false;
}
/**
* Change the file group.
* Changes the file group.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @param mixed $group A group name or number.
* @param bool $recursive Optional. If set True changes file group recursively. Defaults to False.
* @return bool|string
* @param string $file Path to the file.
* @param string|int $group A group name or number.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chgrp( $file, $group, $recursive = false ) {
return false;
}
/**
* Change filesystem permissions.
* Changes filesystem permissions.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @param int $mode Optional. The permissions as octal number, usually 0644 for files, 0755 for dirs.
* @param bool $recursive Optional. If set True changes file group recursively. Defaults to False.
* @return bool|string
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
return false;
}
/**
* Get the file owner.
* Gets the file owner.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @return string|bool Username of the user or false on error.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
return false;
}
/**
* Get the file's group.
* Gets the file's group.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @return string|bool The group or false on error.
* @return string|false The group on success, false on failure.
*/
public function group( $file ) {
return false;
}
/**
* Copy a file.
* Copies a file.
*
* @since 2.5.0
* @abstract
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int $mode Optional. The permissions as octal number, usually 0644 for files, 0755 for dirs.
* Default false.
* @return bool True if file copied successfully, False otherwise.
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @return bool True on success, false on failure.
*/
public function copy( $source, $destination, $overwrite = false, $mode = false ) {
return false;
}
/**
* Move a file.
* Moves a file.
*
* @since 2.5.0
* @abstract
@ -606,36 +614,36 @@ class WP_Filesystem_Base {
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @return bool True if file copied successfully, False otherwise.
* @return bool True on success, false on failure.
*/
public function move( $source, $destination, $overwrite = false ) {
return false;
}
/**
* Delete a file or directory.
* Deletes a file or directory.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to the file.
* @param bool $recursive Optional. If set True changes file group recursively. Defaults to False.
* Default false.
* @param bool $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True if the file or directory was deleted, false on failure.
* @param string $file Path to the file or directory.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @param string|false $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True on success, false on failure.
*/
public function delete( $file, $recursive = false, $type = false ) {
return false;
}
/**
* Check if a file or directory exists.
* Checks if a file or directory exists.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to file/directory.
* @param string $file Path to file or directory.
* @return bool Whether $file exists or not.
*/
public function exists( $file ) {
@ -643,7 +651,7 @@ class WP_Filesystem_Base {
}
/**
* Check if resource is a file.
* Checks if resource is a file.
*
* @since 2.5.0
* @abstract
@ -656,7 +664,7 @@ class WP_Filesystem_Base {
}
/**
* Check if resource is a directory.
* Checks if resource is a directory.
*
* @since 2.5.0
* @abstract
@ -669,7 +677,7 @@ class WP_Filesystem_Base {
}
/**
* Check if a file is readable.
* Checks if a file is readable.
*
* @since 2.5.0
* @abstract
@ -682,12 +690,12 @@ class WP_Filesystem_Base {
}
/**
* Check if a file or directory is writable.
* Checks if a file or directory is writable.
*
* @since 2.5.0
* @abstract
*
* @param string $file Path to file.
* @param string $file Path to file or directory.
* @return bool Whether $file is writable.
*/
public function is_writable( $file ) {
@ -701,7 +709,7 @@ class WP_Filesystem_Base {
* @abstract
*
* @param string $file Path to file.
* @return int|bool Unix timestamp representing last access time.
* @return int|false Unix timestamp representing last access time, false on failure.
*/
public function atime( $file ) {
return false;
@ -714,7 +722,7 @@ class WP_Filesystem_Base {
* @abstract
*
* @param string $file Path to file.
* @return int|bool Unix timestamp representing modification time.
* @return int|false Unix timestamp representing modification time, false on failure.
*/
public function mtime( $file ) {
return false;
@ -727,14 +735,14 @@ class WP_Filesystem_Base {
* @abstract
*
* @param string $file Path to file.
* @return int|bool Size of the file in bytes.
* @return int|false Size of the file in bytes on success, false on failure.
*/
public function size( $file ) {
return false;
}
/**
* Set the access and modification times of a file.
* Sets the access and modification times of a file.
*
* Note: If $file doesn't exist, it will be created.
*
@ -746,33 +754,33 @@ class WP_Filesystem_Base {
* Default 0.
* @param int $atime Optional. Access time to set for file.
* Default 0.
* @return bool Whether operation was successful or not.
* @return bool True on success, false on failure.
*/
public function touch( $file, $time = 0, $atime = 0 ) {
return false;
}
/**
* Create a directory.
* Creates a directory.
*
* @since 2.5.0
* @abstract
*
* @param string $path Path for new directory.
* @param mixed $chmod Optional. The permissions as octal number, (or False to skip chmod)
* Default false.
* @param mixed $chown Optional. A user name or number (or False to skip chown)
* Default false.
* @param mixed $chgrp Optional. A group name or number (or False to skip chgrp).
* Default false.
* @return bool False if directory cannot be created, true otherwise.
* @param string $path Path for new directory.
* @param int|false $chmod Optional. The permissions as octal number (or false to skip chmod).
* Default false.
* @param string|int $chown Optional. A user name or number (or false to skip chown).
* Default false.
* @param string|int $chgrp Optional. A group name or number (or false to skip chgrp).
* Default false.
* @return bool True on success, false on failure.
*/
public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
return false;
}
/**
* Delete a directory.
* Deletes a directory.
*
* @since 2.5.0
* @abstract
@ -780,14 +788,14 @@ class WP_Filesystem_Base {
* @param string $path Path to directory.
* @param bool $recursive Optional. Whether to recursively remove files/directories.
* Default false.
* @return bool Whether directory is deleted successfully or not.
* @return bool True on success, false on failure.
*/
public function rmdir( $path, $recursive = false ) {
return false;
}
/**
* Get details for files in a directory or a specific file.
* Gets details for files in a directory or a specific file.
*
* @since 2.5.0
* @abstract
@ -797,10 +805,10 @@ class WP_Filesystem_Base {
* Default true.
* @param bool $recursive Optional. Whether to recursively include file details in nested directories.
* Default false.
* @return array|bool {
* @return array|false {
* Array of files. False if unable to list directory contents.
*
* @type string $name Name of the file/directory.
* @type string $name Name of the file or directory.
* @type string $perms *nix representation of permissions.
* @type int $permsn Octal representation of permissions.
* @type string $owner Owner name or ID.

View File

@ -16,9 +16,11 @@
class WP_Filesystem_Direct extends WP_Filesystem_Base {
/**
* constructor
* Constructor.
*
* @param mixed $arg ignored argument
* @since 2.5.0
*
* @param mixed $arg Not used.
*/
public function __construct( $arg ) {
$this->method = 'direct';
@ -26,33 +28,39 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Reads entire file into a string
* Reads entire file into a string.
*
* @since 2.5.0
*
* @param string $file Name of the file to read.
* @return string|bool The function returns the read data or false on failure.
* @return string|false Read data on success, false on failure.
*/
public function get_contents( $file ) {
return @file_get_contents( $file );
}
/**
* Reads entire file into an array
* Reads entire file into an array.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return array|bool the file contents in an array or false on failure.
* @return array|false File contents in an array on success, false on failure.
*/
public function get_contents_array( $file ) {
return @file( $file );
}
/**
* Write a string to a file
* Writes a string to a file.
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool False upon failure, true otherwise.
* @since 2.5.0
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int|false $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
$fp = @fopen( $file, 'wb' );
@ -80,31 +88,38 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Gets the current working directory
* Gets the current working directory.
*
* @return string|bool the current working directory on success, or false on failure.
* @since 2.5.0
*
* @return string|false The current working directory on success, false on failure.
*/
public function cwd() {
return @getcwd();
}
/**
* Change directory
* Changes current directory.
*
* @since 2.5.0
*
* @param string $dir The new current directory.
* @return bool Returns true on success or false on failure.
* @return bool True on success, false on failure.
*/
public function chdir( $dir ) {
return @chdir( $dir );
}
/**
* Changes file group
* Changes the file group.
*
* @param string $file Path to the file.
* @param mixed $group A group name or number.
* @param bool $recursive Optional. If set True changes file group recursively. Default false.
* @return bool Returns true on success or false on failure.
* @since 2.5.0
*
* @param string $file Path to the file.
* @param string|int $group A group name or number.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chgrp( $file, $group, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
@ -127,13 +142,16 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Changes filesystem permissions
* Changes filesystem permissions.
*
* @param string $file Path to the file.
* @param int $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @param bool $recursive Optional. If set True changes file group recursively. Default false.
* @return bool Returns true on success or false on failure.
* @since 2.5.0
*
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $mode ) {
@ -160,13 +178,15 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Changes file owner
* Changes the owner of a file or directory.
*
* @param string $file Path to the file.
* @param mixed $owner A user name or number.
* @param bool $recursive Optional. If set True changes file owner recursively.
* Default false.
* @return bool Returns true on success or false on failure.
* @since 2.5.0
*
* @param string $file Path to the file or directory.
* @param string|int $owner A user name or number.
* @param bool $recursive Optional. If set to true, changes file owner recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chown( $file, $owner, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
@ -187,10 +207,12 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Gets file owner
* Gets the file owner.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|bool Username of the user or false on error.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
$owneruid = @fileowner( $file );
@ -205,20 +227,26 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* Gets file permissions
* Gets the permissions of the specified file or filepath in their octal format.
*
* FIXME does not handle errors in fileperms()
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string Mode of the file (last 3 digits).
* @return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
return substr( decoct( @fileperms( $file ) ), -3 );
}
/**
* @param string $file
* @return string|false
* Gets the file's group.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|false The group on success, false on failure.
*/
public function group( $file ) {
$gid = @filegroup( $file );
@ -233,11 +261,17 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @param int $mode
* @return bool
* Copies a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @return bool True on success, false on failure.
*/
public function copy( $source, $destination, $overwrite = false, $mode = false ) {
if ( ! $overwrite && $this->exists( $destination ) ) {
@ -252,10 +286,15 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @return bool
* Moves a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @return bool True on success, false on failure.
*/
public function move( $source, $destination, $overwrite = false ) {
if ( ! $overwrite && $this->exists( $destination ) ) {
@ -276,10 +315,16 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* @param string $file
* @param bool $recursive
* @param string $type
* @return bool
* Deletes a file or directory.
*
* @since 2.5.0
*
* @param string $file Path to the file or directory.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @param string|false $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True on success, false on failure.
*/
public function delete( $file, $recursive = false, $type = false ) {
if ( empty( $file ) ) { // Some filesystems report this as /, which can cause non-expected recursive deletion of all files in the filesystem.
@ -313,73 +358,116 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
return $retval;
}
/**
* @param string $file
* @return bool
* Checks if a file or directory exists.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file exists or not.
*/
public function exists( $file ) {
return @file_exists( $file );
}
/**
* @param string $file
* @return bool
* Checks if resource is a file.
*
* @since 2.5.0
*
* @param string $file File path.
* @return bool Whether $file is a file.
*/
public function is_file( $file ) {
return @is_file( $file );
}
/**
* @param string $path
* @return bool
* Checks if resource is a directory.
*
* @since 2.5.0
*
* @param string $path Directory path.
* @return bool Whether $path is a directory.
*/
public function is_dir( $path ) {
return @is_dir( $path );
}
/**
* @param string $file
* @return bool
* Checks if a file is readable.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return bool Whether $file is readable.
*/
public function is_readable( $file ) {
return @is_readable( $file );
}
/**
* @param string $file
* @return bool
* Checks if a file or directory is writable.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file is writable.
*/
public function is_writable( $file ) {
return @is_writable( $file );
}
/**
* @param string $file
* @return int
* Gets the file's last access time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing last access time, false on failure.
*/
public function atime( $file ) {
return @fileatime( $file );
}
/**
* @param string $file
* @return int
* Gets the file modification time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing modification time, false on failure.
*/
public function mtime( $file ) {
return @filemtime( $file );
}
/**
* @param string $file
* @return int
* Gets the file size (in bytes).
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Size of the file in bytes on success, false on failure.
*/
public function size( $file ) {
return @filesize( $file );
}
/**
* @param string $file
* @param int $time
* @param int $atime
* @return bool
* Sets the access and modification times of a file.
*
* Note: If $file doesn't exist, it will be created.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @param int $time Optional. Modified time to set for file.
* Default 0.
* @param int $atime Optional. Access time to set for file.
* Default 0.
* @return bool True on success, false on failure.
*/
public function touch( $file, $time = 0, $atime = 0 ) {
if ( $time == 0 ) {
@ -392,11 +480,18 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param mixed $chmod
* @param mixed $chown
* @param mixed $chgrp
* @return bool
* Creates a directory.
*
* @since 2.5.0
*
* @param string $path Path for new directory.
* @param int|false $chmod Optional. The permissions as octal number (or false to skip chmod).
* Default false.
* @param string|int $chown Optional. A user name or number (or false to skip chown).
* Default false.
* @param string|int $chgrp Optional. A group name or number (or false to skip chgrp).
* Default false.
* @return bool True on success, false on failure.
*/
public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
// Safe mode fails with a trailing slash under certain PHP versions.
@ -423,19 +518,43 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param bool $recursive
* @return bool
* Deletes a directory.
*
* @since 2.5.0
*
* @param string $path Path to directory.
* @param bool $recursive Optional. Whether to recursively remove files/directories.
* Default false.
* @return bool True on success, false on failure.
*/
public function rmdir( $path, $recursive = false ) {
return $this->delete( $path, $recursive );
}
/**
* @param string $path
* @param bool $include_hidden
* @param bool $recursive
* @return bool|array
* Gets details for files in a directory or a specific file.
*
* @since 2.5.0
*
* @param string $path Path to directory or file.
* @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files.
* Default true.
* @param bool $recursive Optional. Whether to recursively include file details in nested directories.
* Default false.
* @return array|false {
* Array of files. False if unable to list directory contents.
*
* @type string $name Name of the file or directory.
* @type string $perms *nix representation of permissions.
* @type int $permsn Octal representation of permissions.
* @type string $owner Owner name or ID.
* @type int $size Size of file in bytes.
* @type int $lastmodunix Last modified unix timestamp.
* @type mixed $lastmod Last modified month (3 letter) and day (without leading 0).
* @type int $time Last modified time.
* @type string $type Type of resource. 'f' for file, 'd' for directory.
* @type mixed $files If a directory and $recursive is true, contains another array of files.
* }
*/
public function dirlist( $path, $include_hidden = true, $recursive = false ) {
if ( $this->is_file( $path ) ) {

View File

@ -14,9 +14,18 @@
* @see WP_Filesystem_Base
*/
class WP_Filesystem_FTPext extends WP_Filesystem_Base {
/**
* @since 2.5.0
* @var resource
*/
public $link;
/**
* Constructor.
*
* @since 2.5.0
*
* @param array $opt
*/
public function __construct( $opt = '' ) {
@ -67,7 +76,11 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @return bool
* Connects filesystem.
*
* @since 2.5.0
*
* @return bool True on success, false on failure.
*/
public function connect() {
if ( isset( $this->options['ssl'] ) && $this->options['ssl'] && function_exists( 'ftp_ssl_connect' ) ) {
@ -110,12 +123,12 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* Retrieves the file contents.
* Reads entire file into a string.
*
* @since 2.5.0
*
* @param string $file Filename.
* @return string|false File contents on success, false if no temp file could be opened,
* @param string $file Name of the file to read.
* @return string|false Read data on success, false if no temporary file could be opened,
* or if the file couldn't be retrieved.
*/
public function get_contents( $file ) {
@ -137,7 +150,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
$contents = '';
while ( ! feof( $temp ) ) {
$contents .= fread( $temp, 8192 );
$contents .= fread( $temp, 8 * KB_IN_BYTES );
}
fclose( $temp );
@ -146,18 +159,27 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return array
* Reads entire file into an array.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return array|false File contents in an array on success, false on failure.
*/
public function get_contents_array( $file ) {
return explode( "\n", $this->get_contents( $file ) );
}
/**
* @param string $file
* @param string $contents
* @param bool|int $mode
* @return bool
* Writes a string to a file.
*
* @since 2.5.0
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int|false $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
$tempfile = wp_tempnam( $file );
@ -194,7 +216,11 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @return string
* Gets the current working directory.
*
* @since 2.5.0
*
* @return string|false The current working directory on success, false on failure.
*/
public function cwd() {
$cwd = @ftp_pwd( $this->link );
@ -205,18 +231,28 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $dir
* @return bool
* Changes current directory.
*
* @since 2.5.0
*
* @param string $dir The new current directory.
* @return bool True on success, false on failure.
*/
public function chdir( $dir ) {
return @ftp_chdir( $this->link, $dir );
}
/**
* @param string $file
* @param int $mode
* @param bool $recursive
* @return bool
* Changes filesystem permissions.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $mode ) {
@ -245,16 +281,25 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the file owner.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
$dir = $this->dirlist( $file );
return $dir[ $file ]['owner'];
}
/**
* @param string $file
* @return string
* Gets the permissions of the specified file or filepath in their octal format.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
$dir = $this->dirlist( $file );
@ -262,8 +307,12 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the file's group.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|false The group on success, false on failure.
*/
public function group( $file ) {
$dir = $this->dirlist( $file );
@ -271,11 +320,17 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @param string|bool $mode
* @return bool
* Copies a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @return bool True on success, false on failure.
*/
public function copy( $source, $destination, $overwrite = false, $mode = false ) {
if ( ! $overwrite && $this->exists( $destination ) ) {
@ -289,20 +344,31 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @return bool
* Moves a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @return bool True on success, false on failure.
*/
public function move( $source, $destination, $overwrite = false ) {
return ftp_rename( $this->link, $source, $destination );
}
/**
* @param string $file
* @param bool $recursive
* @param string $type
* @return bool
* Deletes a file or directory.
*
* @since 2.5.0
*
* @param string $file Path to the file or directory.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @param string|false $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True on success, false on failure.
*/
public function delete( $file, $recursive = false, $type = false ) {
if ( empty( $file ) ) {
@ -325,8 +391,12 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if a file or directory exists.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file exists or not.
*/
public function exists( $file ) {
$list = @ftp_nlist( $this->link, $file );
@ -339,16 +409,24 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if resource is a file.
*
* @since 2.5.0
*
* @param string $file File path.
* @return bool Whether $file is a file.
*/
public function is_file( $file ) {
return $this->exists( $file ) && ! $this->is_dir( $file );
}
/**
* @param string $path
* @return bool
* Checks if resource is a directory.
*
* @since 2.5.0
*
* @param string $path Directory path.
* @return bool Whether $path is a directory.
*/
public function is_dir( $path ) {
$cwd = $this->cwd();
@ -361,59 +439,96 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if a file is readable.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return bool Whether $file is readable.
*/
public function is_readable( $file ) {
return true;
}
/**
* @param string $file
* @return bool
* Checks if a file or directory is writable.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file is writable.
*/
public function is_writable( $file ) {
return true;
}
/**
* @param string $file
* @return bool
* Gets the file's last access time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing last access time, false on failure.
*/
public function atime( $file ) {
return false;
}
/**
* @param string $file
* @return int
* Gets the file modification time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing modification time, false on failure.
*/
public function mtime( $file ) {
return ftp_mdtm( $this->link, $file );
}
/**
* @param string $file
* @return int
* Gets the file size (in bytes).
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Size of the file in bytes on success, false on failure.
*/
public function size( $file ) {
return ftp_size( $this->link, $file );
}
/**
* @param string $file
* @return bool
* Sets the access and modification times of a file.
*
* Note: If $file doesn't exist, it will be created.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @param int $time Optional. Modified time to set for file.
* Default 0.
* @param int $atime Optional. Access time to set for file.
* Default 0.
* @return bool True on success, false on failure.
*/
public function touch( $file, $time = 0, $atime = 0 ) {
return false;
}
/**
* @param string $path
* @param mixed $chmod
* @param mixed $chown
* @param mixed $chgrp
* @return bool
* Creates a directory.
*
* @since 2.5.0
*
* @param string $path Path for new directory.
* @param int|false $chmod Optional. The permissions as octal number (or false to skip chmod).
* Default false.
* @param string|int $chown Optional. A user name or number (or false to skip chown).
* Default false.
* @param string|int $chgrp Optional. A group name or number (or false to skip chgrp).
* Default false.
* @return bool True on success, false on failure.
*/
public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
$path = untrailingslashit( $path );
@ -429,9 +544,14 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param bool $recursive
* @return bool
* Deletes a directory.
*
* @since 2.5.0
*
* @param string $path Path to directory.
* @param bool $recursive Optional. Whether to recursively remove files/directories.
* Default false.
* @return bool True on success, false on failure.
*/
public function rmdir( $path, $recursive = false ) {
return $this->delete( $path, $recursive );
@ -523,10 +643,29 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param bool $include_hidden
* @param bool $recursive
* @return bool|array
* Gets details for files in a directory or a specific file.
*
* @since 2.5.0
*
* @param string $path Path to directory or file.
* @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files.
* Default true.
* @param bool $recursive Optional. Whether to recursively include file details in nested directories.
* Default false.
* @return array|false {
* Array of files. False if unable to list directory contents.
*
* @type string $name Name of the file or directory.
* @type string $perms *nix representation of permissions.
* @type int $permsn Octal representation of permissions.
* @type string $owner Owner name or ID.
* @type int $size Size of file in bytes.
* @type int $lastmodunix Last modified unix timestamp.
* @type mixed $lastmod Last modified month (3 letter) and day (without leading 0).
* @type int $time Last modified time.
* @type string $type Type of resource. 'f' for file, 'd' for directory.
* @type mixed $files If a directory and $recursive is true, contains another array of files.
* }
*/
public function dirlist( $path = '.', $include_hidden = true, $recursive = false ) {
if ( $this->is_file( $path ) ) {
@ -537,13 +676,13 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
$pwd = @ftp_pwd( $this->link );
if ( ! @ftp_chdir( $this->link, $path ) ) { // Cant change to folder = folder doesn't exist
if ( ! @ftp_chdir( $this->link, $path ) ) { // Can't change to folder = folder doesn't exist.
return false;
}
$list = @ftp_rawlist( $this->link, '-a', false );
@ftp_chdir( $this->link, $pwd );
if ( empty( $list ) ) { // Empty array = non-existent folder (real folder will show . at least)
if ( empty( $list ) ) { // Empty array = non-existent folder (real folder will show . at least).
return false;
}
@ -585,6 +724,9 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
}
/**
* Destructor.
*
* @since 2.5.0
*/
public function __destruct() {
if ( $this->link ) {

View File

@ -14,12 +14,18 @@
* @see WP_Filesystem_Base
*/
class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
/**
* @since 2.5.0
* @var ftp
*/
public $ftp;
/**
* Constructor.
*
* @since 2.5.0
*
* @param array $opt
*/
public function __construct( $opt = '' ) {
@ -59,7 +65,11 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @return bool
* Connects filesystem.
*
* @since 2.5.0
*
* @return bool True on success, false on failure.
*/
public function connect() {
if ( ! $this->ftp ) {
@ -111,13 +121,13 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* Retrieves the file contents.
* Reads entire file into a string.
*
* @since 2.5.0
*
* @param string $file Filename.
* @return string|false File contents on success, false if no temp file could be opened,
* or if the file doesn't exist.
* @param string $file Name of the file to read.
* @return string|false Read data on success, false if no temporary file could be opened,
* or if the file couldn't be retrieved.
*/
public function get_contents( $file ) {
if ( ! $this->exists( $file ) ) {
@ -148,7 +158,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
$contents = '';
while ( ! feof( $temphandle ) ) {
$contents .= fread( $temphandle, 8192 );
$contents .= fread( $temphandle, 8 * KB_IN_BYTES );
}
fclose( $temphandle );
@ -157,18 +167,27 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return array
* Reads entire file into an array.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return array|false File contents in an array on success, false on failure.
*/
public function get_contents_array( $file ) {
return explode( "\n", $this->get_contents( $file ) );
}
/**
* @param string $file
* @param string $contents
* @param int|bool $mode
* @return bool
* Writes a string to a file.
*
* @since 2.5.0
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int|false $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
$temp = wp_tempnam( $file );
@ -205,7 +224,11 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @return string
* Gets the current working directory.
*
* @since 2.5.0
*
* @return string|false The current working directory on success, false on failure.
*/
public function cwd() {
$cwd = $this->ftp->pwd();
@ -216,18 +239,28 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Changes current directory.
*
* @since 2.5.0
*
* @param string $dir The new current directory.
* @return bool True on success, false on failure.
*/
public function chdir( $file ) {
return $this->ftp->chdir( $file );
public function chdir( $dir ) {
return $this->ftp->chdir( $dir );
}
/**
* @param string $file
* @param int|bool $mode
* @param bool $recursive
* @return bool
* Changes filesystem permissions.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $mode ) {
@ -253,8 +286,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the file owner.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
$dir = $this->dirlist( $file );
@ -262,8 +299,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the permissions of the specified file or filepath in their octal format.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
$dir = $this->dirlist( $file );
@ -271,8 +312,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the file's group.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|false The group on success, false on failure.
*/
public function group( $file ) {
$dir = $this->dirlist( $file );
@ -280,11 +325,17 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @param int|bool $mode
* @return bool
* Copies a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @return bool True on success, false on failure.
*/
public function copy( $source, $destination, $overwrite = false, $mode = false ) {
if ( ! $overwrite && $this->exists( $destination ) ) {
@ -300,20 +351,31 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @return bool
* Moves a file.
*
* @since 2.5.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @return bool True on success, false on failure.
*/
public function move( $source, $destination, $overwrite = false ) {
return $this->ftp->rename( $source, $destination );
}
/**
* @param string $file
* @param bool $recursive
* @param string $type
* @return bool
* Deletes a file or directory.
*
* @since 2.5.0
*
* @param string $file Path to the file or directory.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @param string|false $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True on success, false on failure.
*/
public function delete( $file, $recursive = false, $type = false ) {
if ( empty( $file ) ) {
@ -330,8 +392,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if a file or directory exists.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file exists or not.
*/
public function exists( $file ) {
$list = $this->ftp->nlist( $file );
@ -345,8 +411,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if resource is a file.
*
* @since 2.5.0
*
* @param string $file File path.
* @return bool Whether $file is a file.
*/
public function is_file( $file ) {
if ( $this->is_dir( $file ) ) {
@ -359,8 +429,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $path
* @return bool
* Checks if resource is a directory.
*
* @since 2.5.0
*
* @param string $path Directory path.
* @return bool Whether $path is a directory.
*/
public function is_dir( $path ) {
$cwd = $this->cwd();
@ -372,61 +446,96 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if a file is readable.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return bool Whether $file is readable.
*/
public function is_readable( $file ) {
return true;
}
/**
* @param string $file
* @return bool
* Checks if a file or directory is writable.
*
* @since 2.5.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file is writable.
*/
public function is_writable( $file ) {
return true;
}
/**
* @param string $file
* @return bool
* Gets the file's last access time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing last access time, false on failure.
*/
public function atime( $file ) {
return false;
}
/**
* @param string $file
* @return int
* Gets the file modification time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing modification time, false on failure.
*/
public function mtime( $file ) {
return $this->ftp->mdtm( $file );
}
/**
* @param string $file
* @return int
* Gets the file size (in bytes).
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int|false Size of the file in bytes on success, false on failure.
*/
public function size( $file ) {
return $this->ftp->filesize( $file );
}
/**
* @param string $file
* @param int $time
* @param int $atime
* @return bool
* Sets the access and modification times of a file.
*
* Note: If $file doesn't exist, it will be created.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @param int $time Optional. Modified time to set for file.
* Default 0.
* @param int $atime Optional. Access time to set for file.
* Default 0.
* @return bool True on success, false on failure.
*/
public function touch( $file, $time = 0, $atime = 0 ) {
return false;
}
/**
* @param string $path
* @param mixed $chmod
* @param mixed $chown
* @param mixed $chgrp
* @return bool
* Creates a directory.
*
* @since 2.5.0
*
* @param string $path Path for new directory.
* @param int|false $chmod Optional. The permissions as octal number (or false to skip chmod).
* Default false.
* @param string|int $chown Optional. A user name or number (or false to skip chown).
* Default false.
* @param string|int $chgrp Optional. A group name or number (or false to skip chgrp).
* Default false.
* @return bool True on success, false on failure.
*/
public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
$path = untrailingslashit( $path );
@ -445,19 +554,43 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param bool $recursive
* @return bool
* Deletes a directory.
*
* @since 2.5.0
*
* @param string $path Path to directory.
* @param bool $recursive Optional. Whether to recursively remove files/directories.
* Default false.
* @return bool True on success, false on failure.
*/
public function rmdir( $path, $recursive = false ) {
return $this->delete( $path, $recursive );
}
/**
* @param string $path
* @param bool $include_hidden
* @param bool $recursive
* @return bool|array
* Gets details for files in a directory or a specific file.
*
* @since 2.5.0
*
* @param string $path Path to directory or file.
* @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files.
* Default true.
* @param bool $recursive Optional. Whether to recursively include file details in nested directories.
* Default false.
* @return array|false {
* Array of files. False if unable to list directory contents.
*
* @type string $name Name of the file or directory.
* @type string $perms *nix representation of permissions.
* @type int $permsn Octal representation of permissions.
* @type string $owner Owner name or ID.
* @type int $size Size of file in bytes.
* @type int $lastmodunix Last modified unix timestamp.
* @type mixed $lastmod Last modified month (3 letter) and day (without leading 0).
* @type int $time Last modified time.
* @type string $type Type of resource. 'f' for file, 'd' for directory.
* @type mixed $files If a directory and $recursive is true, contains another array of files.
* }
*/
public function dirlist( $path = '.', $include_hidden = true, $recursive = false ) {
if ( $this->is_file( $path ) ) {
@ -517,6 +650,9 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
}
/**
* Destructor.
*
* @since 2.5.0
*/
public function __destruct() {
$this->ftp->quit();

View File

@ -36,16 +36,28 @@
class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
/**
* @since 2.7.0
* @var resource
*/
public $link = false;
/**
* @since 2.7.0
* @var resource
*/
public $sftp_link;
/**
* @since 2.7.0
* @var bool
*/
public $keys = false;
/**
* Constructor.
*
* @since 2.7.0
*
* @param array $opt
*/
public function __construct( $opt = '' ) {
@ -109,7 +121,11 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @return bool
* Connects filesystem.
*
* @since 2.7.0
*
* @return bool True on success, false on failure.
*/
public function connect() {
if ( ! $this->keys ) {
@ -193,6 +209,8 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @since 2.7.0
*
* @param string $command
* @param bool $returnbool
* @return bool|string True on success, false on failure. String if the command was executed, `$returnbool`
@ -228,26 +246,40 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string|false
* Reads entire file into a string.
*
* @since 2.7.0
*
* @param string $file Name of the file to read.
* @return string|false Read data on success, false if no temporary file could be opened,
* or if the file couldn't be retrieved.
*/
public function get_contents( $file ) {
return file_get_contents( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @return array
* Reads entire file into an array.
*
* @since 2.7.0
*
* @param string $file Path to the file.
* @return array|false File contents in an array on success, false on failure.
*/
public function get_contents_array( $file ) {
return file( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @param string $contents
* @param bool|int $mode
* @return bool
* Writes a string to a file.
*
* @since 2.7.0
*
* @param string $file Remote path to the file where to write the data.
* @param string $contents The data to write.
* @param int|false $mode Optional. The file permissions as octal number, usually 0644.
* Default false.
* @return bool True on success, false on failure.
*/
public function put_contents( $file, $contents, $mode = false ) {
$ret = file_put_contents( $this->sftp_path( $file ), $contents );
@ -262,7 +294,11 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @return bool
* Gets the current working directory.
*
* @since 2.7.0
*
* @return string|false The current working directory on success, false on failure.
*/
public function cwd() {
$cwd = ssh2_sftp_realpath( $this->sftp_link, '.' );
@ -273,19 +309,27 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $dir
* @return bool|string
* Changes current directory.
*
* @since 2.7.0
*
* @param string $dir The new current directory.
* @return bool True on success, false on failure.
*/
public function chdir( $dir ) {
return $this->run_command( 'cd ' . $dir, true );
}
/**
* @param string $file
* @param string $group
* @param bool $recursive
* Changes the file group.
*
* @return bool
* @since 2.7.0
*
* @param string $file Path to the file.
* @param string|int $group A group name or number.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chgrp( $file, $group, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
@ -298,10 +342,16 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @param int $mode
* @param bool $recursive
* @return bool|string
* Changes filesystem permissions.
*
* @since 2.7.0
*
* @param string $file Path to the file.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for directories. Default false.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chmod( $file, $mode = false, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
@ -325,12 +375,15 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* Change the ownership of a file / folder.
* Changes the owner of a file or directory.
*
* @param string $file Path to the file.
* @since 2.7.0
*
* @param string $file Path to the file or directory.
* @param string|int $owner A user name or number.
* @param bool $recursive Optional. If set True changes file owner recursivly. Default False.
* @return bool True on success or false on failure.
* @param bool $recursive Optional. If set to true, changes file owner recursively.
* Default false.
* @return bool True on success, false on failure.
*/
public function chown( $file, $owner, $recursive = false ) {
if ( ! $this->exists( $file ) ) {
@ -343,8 +396,12 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string|false
* Gets the file owner.
*
* @since 2.7.0
*
* @param string $file Path to the file.
* @return string|false Username of the owner on success, false on failure.
*/
public function owner( $file ) {
$owneruid = @fileowner( $this->sftp_path( $file ) );
@ -359,16 +416,24 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return string
* Gets the permissions of the specified file or filepath in their octal format.
*
* @since 2.7.0
*
* @param string $file Path to the file.
* @return string Mode of the file (the last 3 digits).
*/
public function getchmod( $file ) {
return substr( decoct( @fileperms( $this->sftp_path( $file ) ) ), -3 );
}
/**
* @param string $file
* @return string|false
* Gets the file's group.
*
* @since 2.7.0
*
* @param string $file Path to the file.
* @return string|false The group on success, false on failure.
*/
public function group( $file ) {
$gid = @filegroup( $this->sftp_path( $file ) );
@ -383,11 +448,17 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @param int|bool $mode
* @return bool
* Copies a file.
*
* @since 2.7.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @param int|false $mode Optional. The permissions as octal number, usually 0644 for files,
* 0755 for dirs. Default false.
* @return bool True on success, false on failure.
*/
public function copy( $source, $destination, $overwrite = false, $mode = false ) {
if ( ! $overwrite && $this->exists( $destination ) ) {
@ -401,20 +472,31 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $source
* @param string $destination
* @param bool $overwrite
* @return bool
* Moves a file.
*
* @since 2.7.0
*
* @param string $source Path to the source file.
* @param string $destination Path to the destination file.
* @param bool $overwrite Optional. Whether to overwrite the destination file if it exists.
* Default false.
* @return bool True on success, false on failure.
*/
public function move( $source, $destination, $overwrite = false ) {
return @ssh2_sftp_rename( $this->sftp_link, $source, $destination );
}
/**
* @param string $file
* @param bool $recursive
* @param string|bool $type
* @return bool
* Deletes a file or directory.
*
* @since 2.7.0
*
* @param string $file Path to the file or directory.
* @param bool $recursive Optional. If set to true, changes file group recursively.
* Default false.
* @param string|false $type Type of resource. 'f' for file, 'd' for directory.
* Default false.
* @return bool True on success, false on failure.
*/
public function delete( $file, $recursive = false, $type = false ) {
if ( 'f' == $type || $this->is_file( $file ) ) {
@ -433,40 +515,60 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return bool
* Checks if a file or directory exists.
*
* @since 2.7.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file exists or not.
*/
public function exists( $file ) {
return file_exists( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @return bool
* Checks if resource is a file.
*
* @since 2.7.0
*
* @param string $file File path.
* @return bool Whether $file is a file.
*/
public function is_file( $file ) {
return is_file( $this->sftp_path( $file ) );
}
/**
* @param string $path
* @return bool
* Checks if resource is a directory.
*
* @since 2.7.0
*
* @param string $path Directory path.
* @return bool Whether $path is a directory.
*/
public function is_dir( $path ) {
return is_dir( $this->sftp_path( $path ) );
}
/**
* @param string $file
* @return bool
* Checks if a file is readable.
*
* @since 2.7.0
*
* @param string $file Path to file.
* @return bool Whether $file is readable.
*/
public function is_readable( $file ) {
return is_readable( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @return bool
* Checks if a file or directory is writable.
*
* @since 2.7.0
*
* @param string $file Path to file or directory.
* @return bool Whether $file is writable.
*/
public function is_writable( $file ) {
// PHP will base it's writable checks on system_user === file_owner, not ssh_user === file_owner
@ -474,44 +576,71 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $file
* @return int
* Gets the file's last access time.
*
* @since 2.7.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing last access time, false on failure.
*/
public function atime( $file ) {
return fileatime( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @return int
* Gets the file modification time.
*
* @since 2.7.0
*
* @param string $file Path to file.
* @return int|false Unix timestamp representing modification time, false on failure.
*/
public function mtime( $file ) {
return filemtime( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @return int
* Gets the file size (in bytes).
*
* @since 2.7.0
*
* @param string $file Path to file.
* @return int|false Size of the file in bytes on success, false on failure.
*/
public function size( $file ) {
return filesize( $this->sftp_path( $file ) );
}
/**
* @param string $file
* @param int $time
* @param int $atime
* Sets the access and modification times of a file.
*
* Note: Not implemented.
*
* @since 2.7.0
*
* @param string $file Path to file.
* @param int $time Optional. Modified time to set for file.
* Default 0.
* @param int $atime Optional. Access time to set for file.
* Default 0.
*/
public function touch( $file, $time = 0, $atime = 0 ) {
//Not implemented.
// Not implemented.
}
/**
* @param string $path
* @param mixed $chmod
* @param mixed $chown
* @param mixed $chgrp
* @return bool
* Creates a directory.
*
* @since 2.7.0
*
* @param string $path Path for new directory.
* @param int|false $chmod Optional. The permissions as octal number (or false to skip chmod).
* Default false.
* @param string|int $chown Optional. A user name or number (or false to skip chown).
* Default false.
* @param string|int $chgrp Optional. A group name or number (or false to skip chgrp).
* Default false.
* @return bool True on success, false on failure.
*/
public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) {
$path = untrailingslashit( $path );
@ -535,19 +664,43 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
}
/**
* @param string $path
* @param bool $recursive
* @return bool
* Deletes a directory.
*
* @since 2.7.0
*
* @param string $path Path to directory.
* @param bool $recursive Optional. Whether to recursively remove files/directories.
* Default false.
* @return bool True on success, false on failure.
*/
public function rmdir( $path, $recursive = false ) {
return $this->delete( $path, $recursive );
}
/**
* @param string $path
* @param bool $include_hidden
* @param bool $recursive
* @return bool|array
* Gets details for files in a directory or a specific file.
*
* @since 2.7.0
*
* @param string $path Path to directory or file.
* @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files.
* Default true.
* @param bool $recursive Optional. Whether to recursively include file details in nested directories.
* Default false.
* @return array|false {
* Array of files. False if unable to list directory contents.
*
* @type string $name Name of the file or directory.
* @type string $perms *nix representation of permissions.
* @type int $permsn Octal representation of permissions.
* @type string $owner Owner name or ID.
* @type int $size Size of file in bytes.
* @type int $lastmodunix Last modified unix timestamp.
* @type mixed $lastmod Last modified month (3 letter) and day (without leading 0).
* @type int $time Last modified time.
* @type string $type Type of resource. 'f' for file, 'd' for directory.
* @type mixed $files If a directory and $recursive is true, contains another array of files.
* }
*/
public function dirlist( $path, $include_hidden = true, $recursive = false ) {
if ( $this->is_file( $path ) ) {

View File

@ -13,7 +13,7 @@
*
* @global string $wp_version
*/
$wp_version = '5.2-beta3-45225';
$wp_version = '5.2-beta3-45226';
/**
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.