2008-05-30 16:14:05 +00:00
<? php
2008-08-14 06:30:38 +00:00
/**
2013-09-22 04:44:10 +00:00
* Base WordPress Filesystem
2008-08-14 06:30:38 +00:00
*
* @package WordPress
* @subpackage Filesystem
*/
/**
* Base WordPress Filesystem class for which Filesystem implementations extend
*
2013-09-22 04:44:10 +00:00
* @since 2.5.0
2008-08-14 06:30:38 +00:00
*/
class WP_Filesystem_Base {
2008-10-10 10:02:46 +00:00
/**
2010-02-24 20:13:23 +00:00
* Whether to display debug data for the connection.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
2008-10-10 10:02:46 +00:00
* @var bool
*/
2014-05-19 00:06:14 +00:00
public $verbose = false ;
2013-09-09 02:55:09 +00:00
2008-10-10 10:02:46 +00:00
/**
2011-05-14 09:56:59 +00:00
* Cached list of local filepaths to mapped remote filepaths.
2008-10-10 10:02:46 +00:00
*
* @access private
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-10-10 10:02:46 +00:00
* @var array
*/
2014-05-19 00:06:14 +00:00
private $cache = array ();
2008-08-09 05:36:14 +00:00
2008-10-10 10:02:46 +00:00
/**
* The Access method of the current connection, Set automatically.
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
2008-10-10 10:02:46 +00:00
* @var string
*/
2014-05-19 00:06:14 +00:00
public $method = '' ;
2008-08-09 05:36:14 +00:00
2014-05-19 00:06:14 +00:00
/**
2014-07-13 23:52:14 +00:00
* Make private properties readable for backwards compatibility.
2014-05-19 00:06:14 +00:00
*
* @since 4.0.0
2014-07-13 23:52:14 +00:00
* @access public
*
2014-08-09 19:30:17 +00:00
* @param string $name Property to get.
* @return mixed Property.
2014-05-19 00:06:14 +00:00
*/
public function __get ( $name ) {
return $this -> $name ;
}
2013-09-22 04:44:10 +00:00
2014-05-19 06:31:15 +00:00
/**
2014-08-09 19:30:17 +00:00
* Make private properties settable for backwards compatibility.
2014-05-19 06:31:15 +00:00
*
* @since 4.0.0
2014-07-13 23:52:14 +00:00
* @access public
*
* @param string $name Property to set.
* @param mixed $value Property value.
* @return mixed Newly-set property.
2014-05-19 06:31:15 +00:00
*/
public function __set ( $name , $value ) {
return $this -> $name = $value ;
}
2014-05-19 06:52:14 +00:00
/**
2014-07-13 23:52:14 +00:00
* Make private properties checkable for backwards compatibility.
2014-05-19 06:52:14 +00:00
*
* @since 4.0.0
2014-07-13 23:52:14 +00:00
* @access public
*
* @param string $name Property to check if set.
* @return bool Whether the property is set.
2014-05-19 06:52:14 +00:00
*/
public function __isset ( $name ) {
return isset ( $this -> $name );
}
/**
2014-08-09 19:30:17 +00:00
* Make private properties un-settable for backwards compatibility.
2014-05-19 06:52:14 +00:00
*
* @since 4.0.0
2014-07-13 23:52:14 +00:00
* @access public
*
* @param string $name Property to unset.
2014-05-19 06:52:14 +00:00
*/
public function __unset ( $name ) {
unset ( $this -> $name );
}
2013-09-22 04:44:10 +00:00
/**
* Return the path on the remote filesystem of ABSPATH.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.7.0
*
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function abspath () {
2008-10-10 10:40:04 +00:00
$folder = $this -> find_folder ( ABSPATH );
2013-09-09 02:55:09 +00:00
// Perhaps the FTP folder is rooted at the WordPress install, Check for wp-includes folder in root, Could have some false positives, but rare.
2014-06-29 22:16:15 +00:00
if ( ! $folder && $this -> is_dir ( '/' . WPINC ) )
2008-10-10 10:40:04 +00:00
$folder = '/' ;
return $folder ;
2008-05-30 16:14:05 +00:00
}
2013-09-09 02:55:09 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Return the path on the remote filesystem of WP_CONTENT_DIR.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.7.0
*
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function wp_content_dir () {
2008-05-30 16:14:05 +00:00
return $this -> find_folder ( WP_CONTENT_DIR );
}
2013-09-09 02:55:09 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Return the path on the remote filesystem of WP_PLUGIN_DIR.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-10-10 10:02:46 +00:00
*
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function wp_plugins_dir () {
2008-05-30 16:14:05 +00:00
return $this -> find_folder ( WP_PLUGIN_DIR );
}
2013-09-09 02:55:09 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Return the path on the remote filesystem of the Themes Directory.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $theme The Theme stylesheet or template for the directory.
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function wp_themes_dir ( $theme = false ) {
2013-08-22 04:50:09 +00:00
$theme_root = get_theme_root ( $theme );
// Account for relative theme roots
if ( '/themes' == $theme_root || ! is_dir ( $theme_root ) )
$theme_root = WP_CONTENT_DIR . $theme_root ;
return $this -> find_folder ( $theme_root );
2011-03-31 13:28:36 +00:00
}
2013-09-09 02:55:09 +00:00
2011-03-31 13:28:36 +00:00
/**
2013-09-22 04:44:10 +00:00
* Return the path on the remote filesystem of WP_LANG_DIR.
2011-03-31 13:28:36 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 3.2.0
2011-03-31 13:28:36 +00:00
*
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function wp_lang_dir () {
2011-03-31 13:28:36 +00:00
return $this -> find_folder ( WP_LANG_DIR );
2008-05-30 16:14:05 +00:00
}
2008-12-09 18:03:31 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Locate a folder on the remote filesystem.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
* @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() instead.
* @see WP_Filesystem::abspath()
* @see WP_Filesystem::wp_content_dir()
* @see WP_Filesystem::wp_plugins_dir()
* @see WP_Filesystem::wp_themes_dir()
* @see WP_Filesystem::wp_lang_dir()
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $base The folder to start searching from.
* @param bool $echo True to display debug information.
* Default false.
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function find_base_dir ( $base = '.' , $echo = false ) {
2008-10-10 10:02:46 +00:00
_deprecated_function ( __FUNCTION__ , '2.7' , 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' );
2008-05-30 16:14:05 +00:00
$this -> verbose = $echo ;
return $this -> abspath ();
}
2013-09-09 02:55:09 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Locate a folder on the remote filesystem.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
* @deprecated 2.7.0 use WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir() methods instead.
* @see WP_Filesystem::abspath()
* @see WP_Filesystem::wp_content_dir()
* @see WP_Filesystem::wp_plugins_dir()
* @see WP_Filesystem::wp_themes_dir()
* @see WP_Filesystem::wp_lang_dir()
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $base The folder to start searching from.
* @param bool $echo True to display debug information.
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function get_base_dir ( $base = '.' , $echo = false ) {
2008-10-10 10:02:46 +00:00
_deprecated_function ( __FUNCTION__ , '2.7' , 'WP_Filesystem::abspath() or WP_Filesystem::wp_*_dir()' );
2008-05-30 16:14:05 +00:00
$this -> verbose = $echo ;
return $this -> abspath ();
}
2008-08-09 05:36:14 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Locate a folder on the remote filesystem.
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* Assumes that on Windows systems, Stripping off the Drive
* letter is OK Sanitizes \\ to / in windows filepaths.
2008-10-10 10:02:46 +00:00
*
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-12-09 18:03:31 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $folder the folder to locate.
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function find_folder ( $folder ) {
2008-10-10 10:02:46 +00:00
2013-08-20 06:47:08 +00:00
if ( isset ( $this -> cache [ $folder ] ) )
return $this -> cache [ $folder ];
if ( stripos ( $this -> method , 'ftp' ) !== false ) {
$constant_overrides = array (
'FTP_BASE' => ABSPATH ,
'FTP_CONTENT_DIR' => WP_CONTENT_DIR ,
'FTP_PLUGIN_DIR' => WP_PLUGIN_DIR ,
'FTP_LANG_DIR' => WP_LANG_DIR
);
// Direct matches ( folder = CONSTANT/ )
foreach ( $constant_overrides as $constant => $dir ) {
if ( ! defined ( $constant ) )
continue ;
if ( $folder === $dir )
return trailingslashit ( constant ( $constant ) );
}
// Prefix Matches ( folder = CONSTANT/subdir )
foreach ( $constant_overrides as $constant => $dir ) {
if ( ! defined ( $constant ) )
continue ;
if ( 0 === stripos ( $folder , $dir ) ) { // $folder starts with $dir
$potential_folder = preg_replace ( '#^' . preg_quote ( $dir , '#' ) . '/#i' , trailingslashit ( constant ( $constant ) ), $folder );
$potential_folder = trailingslashit ( $potential_folder );
if ( $this -> is_dir ( $potential_folder ) ) {
$this -> cache [ $folder ] = $potential_folder ;
return $potential_folder ;
}
}
}
2009-04-13 16:11:02 +00:00
} elseif ( 'direct' == $this -> method ) {
2013-09-09 02:55:09 +00:00
$folder = str_replace ( '\\' , '/' , $folder ); // Windows path sanitisation
2009-04-13 16:11:02 +00:00
return trailingslashit ( $folder );
}
2013-09-09 02:55:09 +00:00
$folder = preg_replace ( '|^([a-z]{1}):|i' , '' , $folder ); // Strip out windows drive letter if it's there.
$folder = str_replace ( '\\' , '/' , $folder ); // Windows path sanitisation
2008-10-10 10:02:46 +00:00
2008-05-30 16:14:05 +00:00
if ( isset ( $this -> cache [ $folder ] ) )
return $this -> cache [ $folder ];
2013-09-09 02:55:09 +00:00
if ( $this -> exists ( $folder ) ) { // Folder exists at that absolute path.
2009-04-13 16:11:02 +00:00
$folder = trailingslashit ( $folder );
2008-05-30 16:14:05 +00:00
$this -> cache [ $folder ] = $folder ;
return $folder ;
}
2010-01-18 20:34:48 +00:00
if ( $return = $this -> search_for_folder ( $folder ) )
2008-05-30 16:14:05 +00:00
$this -> cache [ $folder ] = $return ;
return $return ;
}
2008-08-09 05:36:14 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Locate a folder on the remote filesystem.
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* Expects Windows sanitized path.
2008-10-10 10:02:46 +00:00
*
* @access private
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-12-09 18:03:31 +00:00
*
2013-09-22 04:44:10 +00:00
* @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.
2008-10-10 10:02:46 +00:00
* @return string The location of the remote path.
*/
2014-05-19 00:06:14 +00:00
public function search_for_folder ( $folder , $base = '.' , $loop = false ) {
2008-05-30 16:14:05 +00:00
if ( empty ( $base ) || '.' == $base )
$base = trailingslashit ( $this -> cwd ());
2008-08-09 05:36:14 +00:00
2008-10-10 10:02:46 +00:00
$folder = untrailingslashit ( $folder );
2008-08-09 05:36:14 +00:00
2013-08-15 16:25:12 +00:00
if ( $this -> verbose )
printf ( " \n " . __ ( 'Looking for %1$s in %2$s' ) . "<br/> \n " , $folder , $base );
2008-05-30 16:14:05 +00:00
$folder_parts = explode ( '/' , $folder );
2013-08-15 16:25:12 +00:00
$folder_part_keys = array_keys ( $folder_parts );
$last_index = array_pop ( $folder_part_keys );
2012-07-06 10:41:32 +00:00
$last_path = $folder_parts [ $last_index ];
2008-08-09 05:36:14 +00:00
2008-05-30 16:14:05 +00:00
$files = $this -> dirlist ( $base );
2008-08-09 05:36:14 +00:00
2012-07-06 10:41:32 +00:00
foreach ( $folder_parts as $index => $key ) {
if ( $index == $last_index )
2013-09-09 02:55:09 +00:00
continue ; // We want this to be caught by the next code block.
2008-05-30 16:14:05 +00:00
2014-07-17 09:14:16 +00:00
/*
* 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.
*/
2009-04-13 16:11:02 +00:00
if ( isset ( $files [ $key ]) ){
2014-07-17 09:14:16 +00:00
2013-09-09 02:55:09 +00:00
// Lets try that folder:
2008-05-30 16:14:05 +00:00
$newdir = trailingslashit ( path_join ( $base , $key ));
2009-04-13 16:11:02 +00:00
if ( $this -> verbose )
2013-08-15 16:25:12 +00:00
printf ( " \n " . __ ( 'Changing to %s' ) . "<br/> \n " , $newdir );
2014-07-17 09:14:16 +00:00
// Only search for the remaining path tokens in the directory, not the full path again.
2012-07-06 11:19:46 +00:00
$newfolder = implode ( '/' , array_slice ( $folder_parts , $index + 1 ) );
if ( $ret = $this -> search_for_folder ( $newfolder , $newdir , $loop ) )
2008-05-30 16:14:05 +00:00
return $ret ;
}
}
2008-08-09 05:36:14 +00:00
2013-09-09 02:55:09 +00:00
// 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.
2009-04-13 16:11:02 +00:00
if ( isset ( $files [ $last_path ] ) ) {
if ( $this -> verbose )
2013-08-15 16:25:12 +00:00
printf ( " \n " . __ ( 'Found %s' ) . "<br/> \n " , $base . $last_path );
2009-04-13 16:11:02 +00:00
return trailingslashit ( $base . $last_path );
2008-05-30 16:14:05 +00:00
}
2013-08-15 16:25:12 +00:00
// Prevent this function from looping again.
// No need to proceed if we've just searched in /
if ( $loop || '/' == $base )
return false ;
// As an extra last resort, Change back to / if the folder wasn't found.
// This comes into effect when the CWD is /home/user/ but WP is at /var/www/....
return $this -> search_for_folder ( $folder , '/' , true );
2008-08-09 05:36:14 +00:00
2008-05-30 16:14:05 +00:00
}
2008-08-09 05:36:14 +00:00
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Return the *nix-style file permissions for a file.
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* From the PHP documentation page for fileperms().
2008-10-10 10:02:46 +00:00
*
* @link http://docs.php.net/fileperms
2013-09-22 04:44:10 +00:00
*
2008-10-10 10:02:46 +00:00
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $file String filename.
* @return string The *nix-style representation of permissions.
2008-10-10 10:02:46 +00:00
*/
2014-05-19 00:06:14 +00:00
public function gethchmod ( $file ){
2008-05-30 16:14:05 +00:00
$perms = $this -> getchmod ( $file );
if (( $perms & 0xC000 ) == 0xC000 ) // Socket
$info = 's' ;
elseif (( $perms & 0xA000 ) == 0xA000 ) // Symbolic Link
$info = 'l' ;
elseif (( $perms & 0x8000 ) == 0x8000 ) // Regular
$info = '-' ;
elseif (( $perms & 0x6000 ) == 0x6000 ) // Block special
$info = 'b' ;
elseif (( $perms & 0x4000 ) == 0x4000 ) // Directory
$info = 'd' ;
elseif (( $perms & 0x2000 ) == 0x2000 ) // Character special
$info = 'c' ;
2009-08-16 08:34:53 +00:00
elseif (( $perms & 0x1000 ) == 0x1000 ) // FIFO pipe
2008-05-30 16:14:05 +00:00
$info = 'p' ;
else // Unknown
$info = 'u' ;
// Owner
$info .= (( $perms & 0x0100 ) ? 'r' : '-' );
$info .= (( $perms & 0x0080 ) ? 'w' : '-' );
$info .= (( $perms & 0x0040 ) ?
(( $perms & 0x0800 ) ? 's' : 'x' ) :
(( $perms & 0x0800 ) ? 'S' : '-' ));
// Group
$info .= (( $perms & 0x0020 ) ? 'r' : '-' );
$info .= (( $perms & 0x0010 ) ? 'w' : '-' );
$info .= (( $perms & 0x0008 ) ?
(( $perms & 0x0400 ) ? 's' : 'x' ) :
(( $perms & 0x0400 ) ? 'S' : '-' ));
// World
$info .= (( $perms & 0x0004 ) ? 'r' : '-' );
$info .= (( $perms & 0x0002 ) ? 'w' : '-' );
$info .= (( $perms & 0x0001 ) ?
(( $perms & 0x0200 ) ? 't' : 'x' ) :
(( $perms & 0x0200 ) ? 'T' : '-' ));
return $info ;
}
2008-10-10 10:02:46 +00:00
/**
2013-09-22 04:44:10 +00:00
* Convert *nix-style file permissions to a octal number.
2008-10-10 10:02:46 +00:00
*
* Converts '-rw-r--r--' to 0644
* From "info at rvgate dot nl"'s comment on the PHP documentation for chmod()
*
* @link http://docs.php.net/manual/en/function.chmod.php#49614
2013-09-22 04:44:10 +00:00
*
2008-10-10 10:02:46 +00:00
* @access public
2013-09-22 04:44:10 +00:00
* @since 2.5.0
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $mode string The *nix-style file permission.
2008-10-10 10:02:46 +00:00
* @return int octal representation
*/
2014-05-19 00:06:14 +00:00
public function getnumchmodfromh ( $mode ) {
2008-10-10 10:02:46 +00:00
$realmode = '' ;
$legal = array ( '' , 'w' , 'r' , 'x' , '-' );
$attarray = preg_split ( '//' , $mode );
2008-05-30 16:14:05 +00:00
2010-01-18 20:34:48 +00:00
for ( $i = 0 ; $i < count ( $attarray ); $i ++ )
if ( $key = array_search ( $attarray [ $i ], $legal ))
2008-05-30 16:14:05 +00:00
$realmode .= $legal [ $key ];
2008-08-09 05:36:14 +00:00
2012-09-29 01:33:15 +00:00
$mode = str_pad ( $realmode , 10 , '-' , STR_PAD_LEFT );
2008-05-30 16:14:05 +00:00
$trans = array ( '-' => '0' , 'r' => '4' , 'w' => '2' , 'x' => '1' );
$mode = strtr ( $mode , $trans );
2008-08-09 05:36:14 +00:00
2012-09-29 01:33:15 +00:00
$newmode = $mode [ 0 ];
$newmode .= $mode [ 1 ] + $mode [ 2 ] + $mode [ 3 ];
$newmode .= $mode [ 4 ] + $mode [ 5 ] + $mode [ 6 ];
$newmode .= $mode [ 7 ] + $mode [ 8 ] + $mode [ 9 ];
2008-05-30 16:14:05 +00:00
return $newmode ;
}
2008-09-26 06:53:57 +00:00
/**
2013-09-22 04:44:10 +00:00
* Determine if the string provided contains binary characters.
2008-10-10 10:02:46 +00:00
*
* @access private
2013-09-22 04:44:10 +00:00
* @since 2.7.0
2008-10-10 10:02:46 +00:00
*
2013-09-22 04:44:10 +00:00
* @param string $text String to test against.
* @return bool true if string is binary, false otherwise.
2008-10-10 10:02:46 +00:00
*/
2014-05-19 00:06:14 +00:00
public function is_binary ( $text ) {
2013-09-09 02:55:09 +00:00
return ( bool ) preg_match ( '|[^\x20-\x7E]|' , $text ); // chr(32)..chr(127)
2008-09-26 06:53:57 +00:00
}
2013-09-22 04:44:10 +00:00
/**
* Change the ownership of a file / folder.
*
* 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.
*/
2014-05-19 00:06:14 +00:00
public function chown ( $file , $owner , $recursive = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Connect filesystem.
*
* @since 2.5.0
*
* @return bool True on success or false on failure (always true for WP_Filesystem_Direct).
*/
2014-05-19 00:06:14 +00:00
public function connect () {
2013-09-22 04:44:10 +00:00
return true ;
}
/**
* Read entire file into a string.
*
* @since 2.5.0
*
* @param string $file Name of the file to read.
* @return string|bool Returns the read data or false on failure.
*/
2014-05-19 00:06:14 +00:00
public function get_contents ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Read 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.
*/
2014-05-19 00:06:14 +00:00
public function get_contents_array ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Write 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 $mode Optional. The file permissions as octal number, usually 0644.
* @return bool False on failure.
*/
2014-05-19 00:06:14 +00:00
public function put_contents ( $file , $contents , $mode = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Get the current working directory.
*
* @since 2.5.0
*
* @return string|bool The current working directory on success, or false on failure.
*/
2014-05-19 00:06:14 +00:00
public function cwd () {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Change current directory.
*
* @since 2.5.0
*
* @param string $dir The new current directory.
* @return bool Returns true on success or false on failure.
*/
2014-05-19 00:06:14 +00:00
public function chdir ( $dir ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Change the file group.
*
* @since 2.5.0
*
* @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.
*/
2014-05-19 00:06:14 +00:00
public function chgrp ( $file , $group , $recursive = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Change filesystem permissions.
*
* @since 2.5.0
*
* @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.
*/
2014-05-19 00:06:14 +00:00
public function chmod ( $file , $mode = false , $recursive = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Get 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.
*/
2014-05-19 00:06:14 +00:00
public function owner ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Get the file's group.
*
* @since 2.5.0
*
* @param string $file Path to the file.
* @return string|bool The group or false on error.
*/
2014-05-19 00:06:14 +00:00
public function group ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Copy 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 $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.
*/
2014-05-19 00:06:14 +00:00
public function copy ( $source , $destination , $overwrite = false , $mode = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Move 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 if file copied successfully, False otherwise.
*/
2014-05-19 00:06:14 +00:00
public function move ( $source , $destination , $overwrite = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Delete a file or directory.
*
* @since 2.5.0
*
* @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.
*/
2014-05-19 00:06:14 +00:00
public function delete ( $file , $recursive = false , $type = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Check if a file or directory exists.
*
* @since 2.5.0
*
* @param string $file Path to file/directory.
* @return bool Whether $file exists or not.
*/
2014-05-19 00:06:14 +00:00
public function exists ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Check if resource is a file.
*
* @since 2.5.0
*
* @param string $file File path.
* @return bool Whether $file is a file.
*/
2014-05-19 00:06:14 +00:00
public function is_file ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Check if resource is a directory.
*
* @since 2.5.0
*
* @param string $path Directory path.
* @return bool Whether $path is a directory.
*/
2014-05-19 00:06:14 +00:00
public function is_dir ( $path ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Check if a file is readable.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return bool Whether $file is readable.
*/
2014-05-19 00:06:14 +00:00
public function is_readable ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Check if a file or directory is writable.
*
* @since 2.5.0
*
* @param string $path Path to file/directory.
* @return bool Whether $file is writable.
*/
2014-05-19 00:06:14 +00:00
public function is_writable ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Gets the file's last access time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int Unix timestamp representing last access time.
*/
2014-05-19 00:06:14 +00:00
public function atime ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Gets the file modification time.
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int Unix timestamp representing modification time.
*/
2014-05-19 00:06:14 +00:00
public function mtime ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Gets the file size (in bytes).
*
* @since 2.5.0
*
* @param string $file Path to file.
* @return int Size of the file in bytes.
*/
2014-05-19 00:06:14 +00:00
public function size ( $file ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Set 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 Whether operation was successful or not.
*/
2014-05-19 00:06:14 +00:00
public function touch ( $file , $time = 0 , $atime = 0 ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Create a directory.
*
* @since 2.5.0
*
* @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.
*/
2014-05-19 00:06:14 +00:00
public function mkdir ( $path , $chmod = false , $chown = false , $chgrp = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Delete 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 Whether directory is deleted successfully or not.
*/
2014-05-19 00:06:14 +00:00
public function rmdir ( $path , $recursive = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
/**
* Get 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|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.
* }
*/
2014-05-19 00:06:14 +00:00
public function dirlist ( $path , $include_hidden = true , $recursive = false ) {
2013-09-22 04:44:10 +00:00
return false ;
}
} // WP_Filesystem_Base