diff --git a/src/wp-admin/includes/class-wp-filesystem-base.php b/src/wp-admin/includes/class-wp-filesystem-base.php index c518408ec9..45e4474767 100644 --- a/src/wp-admin/includes/class-wp-filesystem-base.php +++ b/src/wp-admin/includes/class-wp-filesystem-base.php @@ -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. diff --git a/src/wp-admin/includes/class-wp-filesystem-direct.php b/src/wp-admin/includes/class-wp-filesystem-direct.php index f7d6cb159f..41839097f0 100644 --- a/src/wp-admin/includes/class-wp-filesystem-direct.php +++ b/src/wp-admin/includes/class-wp-filesystem-direct.php @@ -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 ) ) { diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpext.php b/src/wp-admin/includes/class-wp-filesystem-ftpext.php index 36648e1844..1db0a57917 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ftpext.php +++ b/src/wp-admin/includes/class-wp-filesystem-ftpext.php @@ -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 ) { diff --git a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php index 45f1235ce6..77a7a66875 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php +++ b/src/wp-admin/includes/class-wp-filesystem-ftpsockets.php @@ -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(); diff --git a/src/wp-admin/includes/class-wp-filesystem-ssh2.php b/src/wp-admin/includes/class-wp-filesystem-ssh2.php index 82101beacd..b87a195724 100644 --- a/src/wp-admin/includes/class-wp-filesystem-ssh2.php +++ b/src/wp-admin/includes/class-wp-filesystem-ssh2.php @@ -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 ) ) {