mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
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:
parent
13345d12e9
commit
74e9c3d20d
@ -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.
|
||||
|
@ -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 ) ) {
|
||||
|
@ -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 ) {
|
||||
|
@ -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();
|
||||
|
@ -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 ) ) {
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user