X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/fa11948979fd6a4ea5705dc613b239699a459db3..3194d1bb103c2d8db4f44feeced5e58ee2756658:/wp-admin/includes/class-wp-filesystem-base.php diff --git a/wp-admin/includes/class-wp-filesystem-base.php b/wp-admin/includes/class-wp-filesystem-base.php index c471b54f..7e6a80f0 100644 --- a/wp-admin/includes/class-wp-filesystem-base.php +++ b/wp-admin/includes/class-wp-filesystem-base.php @@ -19,16 +19,16 @@ class WP_Filesystem_Base { * @since 2.5.0 * @var bool */ - var $verbose = false; + public $verbose = false; /** * Cached list of local filepaths to mapped remote filepaths. * - * @access private + * @access public * @since 2.7.0 * @var array */ - var $cache = array(); + public $cache = array(); /** * The Access method of the current connection, Set automatically. @@ -37,12 +37,17 @@ class WP_Filesystem_Base { * @since 2.5.0 * @var string */ - var $method = ''; + public $method = ''; /** - * Constructor (empty). + * @access public */ - function __construct() {} + public $errors = null; + + /** + * @access public + */ + public $options = array(); /** * Return the path on the remote filesystem of ABSPATH. @@ -52,10 +57,10 @@ class WP_Filesystem_Base { * * @return string The location of the remote path. */ - function abspath() { + public function abspath() { $folder = $this->find_folder(ABSPATH); // Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare. - if ( ! $folder && $this->is_dir('/wp-includes') ) + if ( ! $folder && $this->is_dir( '/' . WPINC ) ) $folder = '/'; return $folder; } @@ -68,7 +73,7 @@ class WP_Filesystem_Base { * * @return string The location of the remote path. */ - function wp_content_dir() { + public function wp_content_dir() { return $this->find_folder(WP_CONTENT_DIR); } @@ -80,7 +85,7 @@ class WP_Filesystem_Base { * * @return string The location of the remote path. */ - function wp_plugins_dir() { + public function wp_plugins_dir() { return $this->find_folder(WP_PLUGIN_DIR); } @@ -93,7 +98,7 @@ class WP_Filesystem_Base { * @param string $theme The Theme stylesheet or template for the directory. * @return string The location of the remote path. */ - function wp_themes_dir( $theme = false ) { + public function wp_themes_dir( $theme = false ) { $theme_root = get_theme_root( $theme ); // Account for relative theme roots @@ -111,7 +116,7 @@ class WP_Filesystem_Base { * * @return string The location of the remote path. */ - function wp_lang_dir() { + public function wp_lang_dir() { return $this->find_folder(WP_LANG_DIR); } @@ -132,7 +137,7 @@ class WP_Filesystem_Base { * Default false. * @return string The location of the remote path. */ - function find_base_dir( $base = '.', $echo = false ) { + public function find_base_dir( $base = '.', $echo = false ) { _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); $this->verbose = $echo; return $this->abspath(); @@ -154,7 +159,7 @@ class WP_Filesystem_Base { * @param bool $echo True to display debug information. * @return string The location of the remote path. */ - function get_base_dir( $base = '.', $echo = false ) { + public function get_base_dir( $base = '.', $echo = false ) { _deprecated_function(__FUNCTION__, '2.7', 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' ); $this->verbose = $echo; return $this->abspath(); @@ -170,10 +175,9 @@ class WP_Filesystem_Base { * @since 2.7.0 * * @param string $folder the folder to locate. - * @return string The location of the remote path. + * @return string|false The location of the remote path, false on failure. */ - function find_folder( $folder ) { - + public function find_folder( $folder ) { if ( isset( $this->cache[ $folder ] ) ) return $this->cache[ $folder ]; @@ -233,22 +237,24 @@ class WP_Filesystem_Base { * * Expects Windows sanitized path. * - * @access private + * @access public * @since 2.7.0 * * @param string $folder The folder to locate. * @param string $base The folder to start searching from. * @param bool $loop If the function has recursed, Internal use only. - * @return string The location of the remote path. + * @return string|false The location of the remote path, false to cease looping. */ - function search_for_folder( $folder, $base = '.', $loop = false ) { + public function search_for_folder( $folder, $base = '.', $loop = false ) { if ( empty( $base ) || '.' == $base ) $base = trailingslashit($this->cwd()); $folder = untrailingslashit($folder); - if ( $this->verbose ) - printf( "\n" . __('Looking for %1$s in %2$s') . "
\n", $folder, $base ); + if ( $this->verbose ) { + /* translators: 1: folder to locate, 2: folder to start searching from */ + printf( "\n" . __( 'Looking for %1$s in %2$s' ) . "
\n", $folder, $base ); + } $folder_parts = explode('/', $folder); $folder_part_keys = array_keys( $folder_parts ); @@ -261,26 +267,36 @@ class WP_Filesystem_Base { if ( $index == $last_index ) continue; // We want this to be caught by the next code block. - // 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 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. + /* + * 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 + * 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. + */ if ( isset($files[ $key ]) ){ - // Lets try that folder: + + // Let's try that folder: $newdir = trailingslashit(path_join($base, $key)); - if ( $this->verbose ) - printf( "\n" . __('Changing to %s') . "
\n", $newdir ); - // only search for the remaining path tokens in the directory, not the full path again + if ( $this->verbose ) { + /* translators: %s: directory name */ + printf( "\n" . __( 'Changing to %s' ) . "
\n", $newdir ); + } + + // Only search for the remaining path tokens in the directory, not the full path again. $newfolder = implode( '/', array_slice( $folder_parts, $index + 1 ) ); if ( $ret = $this->search_for_folder( $newfolder, $newdir, $loop) ) return $ret; } } - // Only check this as a last resort, to prevent locating the incorrect install. All above procedures will fail quickly if this is the right branch to take. + // Only check this as a last resort, to prevent locating the incorrect install. + // All above procedures will fail quickly if this is the right branch to take. if (isset( $files[ $last_path ] ) ) { - if ( $this->verbose ) - printf( "\n" . __('Found %s') . "
\n", $base . $last_path ); + if ( $this->verbose ) { + /* translators: %s: directory name */ + printf( "\n" . __( 'Found %s' ) . "
\n", $base . $last_path ); + } return trailingslashit($base . $last_path); } @@ -308,8 +324,8 @@ class WP_Filesystem_Base { * @param string $file String filename. * @return string The *nix-style representation of permissions. */ - function gethchmod( $file ){ - $perms = $this->getchmod($file); + public function gethchmod( $file ){ + $perms = intval( $this->getchmod( $file ), 8 ); if (($perms & 0xC000) == 0xC000) // Socket $info = 's'; elseif (($perms & 0xA000) == 0xA000) // Symbolic Link @@ -350,6 +366,18 @@ class WP_Filesystem_Base { return $info; } + /** + * Gets the permissions of the specified file or filepath in their octal format + * + * @access public + * @since 2.5.0 + * @param string $file + * @return string the last 3 characters of the octal number + */ + public function getchmod( $file ) { + return '777'; + } + /** * Convert *nix-style file permissions to a octal number. * @@ -364,14 +392,16 @@ class WP_Filesystem_Base { * @param string $mode string The *nix-style file permission. * @return int octal representation */ - function getnumchmodfromh( $mode ) { + public function getnumchmodfromh( $mode ) { $realmode = ''; $legal = array('', 'w', 'r', 'x', '-'); $attarray = preg_split('//', $mode); - for ($i=0; $i < count($attarray); $i++) - if ($key = array_search($attarray[$i], $legal)) + for ( $i = 0, $c = count( $attarray ); $i < $c; $i++ ) { + if ($key = array_search($attarray[$i], $legal)) { $realmode .= $legal[$key]; + } + } $mode = str_pad($realmode, 10, '-', STR_PAD_LEFT); $trans = array('-'=>'0', 'r'=>'4', 'w'=>'2', 'x'=>'1'); @@ -387,13 +417,13 @@ class WP_Filesystem_Base { /** * Determine if the string provided contains binary characters. * - * @access private + * @access public * @since 2.7.0 * * @param string $text String to test against. * @return bool true if string is binary, false otherwise. */ - function is_binary( $text ) { + public function is_binary( $text ) { return (bool) preg_match( '|[^\x20-\x7E]|', $text ); // chr(32)..chr(127) } @@ -402,6 +432,7 @@ class WP_Filesystem_Base { * * Default behavior is to do nothing, override this in your subclass, if desired. * + * @access public * @since 2.5.0 * * @param string $file Path to the file. @@ -409,138 +440,160 @@ class WP_Filesystem_Base { * @param bool $recursive Optional. If set True changes file owner recursivly. Defaults to False. * @return bool Returns true on success or false on failure. */ - function chown( $file, $owner, $recursive = false ) { + public function chown( $file, $owner, $recursive = false ) { return false; } /** * Connect filesystem. * + * @access public * @since 2.5.0 + * @abstract * * @return bool True on success or false on failure (always true for WP_Filesystem_Direct). */ - function connect() { + public function connect() { return true; } /** * Read entire file into a string. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Name of the file to read. - * @return string|bool Returns the read data or false on failure. + * @return mixed|bool Returns the read data or false on failure. */ - function get_contents( $file ) { + public function get_contents( $file ) { return false; } /** * Read entire file into an array. * + * @access public * @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. */ - function get_contents_array( $file ) { + public function get_contents_array( $file ) { return false; } /** * Write a string to a file. * + * @access public * @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. */ - function put_contents( $file, $contents, $mode = false ) { + public function put_contents( $file, $contents, $mode = false ) { return false; } /** * Get the current working directory. * + * @access public * @since 2.5.0 + * @abstract * * @return string|bool The current working directory on success, or false on failure. */ - function cwd() { + public function cwd() { return false; } /** * Change current directory. * + * @access public * @since 2.5.0 + * @abstract * * @param string $dir The new current directory. - * @return bool Returns true on success or false on failure. + * @return bool|string */ - function chdir( $dir ) { + public function chdir( $dir ) { return false; } /** * Change the file group. * + * @access public * @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 Returns true on success or false on failure. + * @return bool|string */ - function chgrp( $file, $group, $recursive = false ) { + public function chgrp( $file, $group, $recursive = false ) { return false; } /** * Change filesystem permissions. * + * @access public * @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 Returns true on success or false on failure. + * @return bool|string */ - function chmod( $file, $mode = false, $recursive = false ) { + public function chmod( $file, $mode = false, $recursive = false ) { return false; } /** * Get the file owner. * + * @access public * @since 2.5.0 - * + * @abstract + * * @param string $file Path to the file. * @return string|bool Username of the user or false on error. */ - function owner( $file ) { + public function owner( $file ) { return false; } /** * Get the file's group. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to the file. * @return string|bool The group or false on error. */ - function group( $file ) { + public function group( $file ) { return false; } /** * Copy a file. * + * @access public * @since 2.5.0 + * @abstract * * @param string $source Path to the source file. * @param string $destination Path to the destination file. @@ -550,14 +603,16 @@ class WP_Filesystem_Base { * Default false. * @return bool True if file copied successfully, False otherwise. */ - function copy( $source, $destination, $overwrite = false, $mode = false ) { + public function copy( $source, $destination, $overwrite = false, $mode = false ) { return false; } /** * Move a file. * + * @access public * @since 2.5.0 + * @abstract * * @param string $source Path to the source file. * @param string $destination Path to the destination file. @@ -565,14 +620,16 @@ class WP_Filesystem_Base { * Default false. * @return bool True if file copied successfully, False otherwise. */ - function move( $source, $destination, $overwrite = false ) { + public function move( $source, $destination, $overwrite = false ) { return false; } /** * Delete a file or directory. * + * @access public * @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. @@ -581,103 +638,118 @@ class WP_Filesystem_Base { * Default false. * @return bool True if the file or directory was deleted, false on failure. */ - function delete( $file, $recursive = false, $type = false ) { + public function delete( $file, $recursive = false, $type = false ) { return false; } /** * Check if a file or directory exists. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file/directory. * @return bool Whether $file exists or not. */ - function exists( $file ) { + public function exists( $file ) { return false; } /** * Check if resource is a file. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file File path. * @return bool Whether $file is a file. */ - function is_file( $file ) { + public function is_file( $file ) { return false; } /** * Check if resource is a directory. * + * @access public * @since 2.5.0 + * @abstract * * @param string $path Directory path. * @return bool Whether $path is a directory. */ - function is_dir( $path ) { + public function is_dir( $path ) { return false; } /** * Check if a file is readable. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file. * @return bool Whether $file is readable. */ - function is_readable( $file ) { + public function is_readable( $file ) { return false; } /** * Check if a file or directory is writable. * + * @access public * @since 2.5.0 + * @abstract * - * @param string $path Path to file/directory. * @return bool Whether $file is writable. */ - function is_writable( $file ) { + public function is_writable( $file ) { return false; } /** * Gets the file's last access time. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file. - * @return int Unix timestamp representing last access time. + * @return int|bool Unix timestamp representing last access time. */ - function atime( $file ) { + public function atime( $file ) { return false; } /** * Gets the file modification time. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file. - * @return int Unix timestamp representing modification time. + * @return int|bool Unix timestamp representing modification time. */ - function mtime( $file ) { + public function mtime( $file ) { return false; } /** * Gets the file size (in bytes). * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file. - * @return int Size of the file in bytes. + * @return int|bool Size of the file in bytes. */ - function size( $file ) { + public function size( $file ) { return false; } @@ -686,7 +758,9 @@ class WP_Filesystem_Base { * * Note: If $file doesn't exist, it will be created. * + * @access public * @since 2.5.0 + * @abstract * * @param string $file Path to file. * @param int $time Optional. Modified time to set for file. @@ -695,14 +769,16 @@ class WP_Filesystem_Base { * Default 0. * @return bool Whether operation was successful or not. */ - function touch( $file, $time = 0, $atime = 0 ) { + public function touch( $file, $time = 0, $atime = 0 ) { return false; } /** * Create a directory. * + * @access public * @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) @@ -713,28 +789,32 @@ class WP_Filesystem_Base { * Default false. * @return bool False if directory cannot be created, true otherwise. */ - function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) { + public function mkdir( $path, $chmod = false, $chown = false, $chgrp = false ) { return false; } /** * Delete a directory. * + * @access public * @since 2.5.0 + * @abstract * * @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. */ - function rmdir( $path, $recursive = false ) { + public function rmdir( $path, $recursive = false ) { return false; } /** * Get details for files in a directory or a specific file. * + * @access public * @since 2.5.0 + * @abstract * * @param string $path Path to directory or file. * @param bool $include_hidden Optional. Whether to include details of hidden ("." prefixed) files. @@ -744,19 +824,19 @@ class WP_Filesystem_Base { * @return array|bool { * Array of files. False if unable to list directory contents. * - * @type string 'name' Name of the file/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. + * @type string $name Name of the file/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. * } */ - function dirlist( $path, $include_hidden = true, $recursive = false ) { + public function dirlist( $path, $include_hidden = true, $recursive = false ) { return false; }