WP_Filesystem fixes and phpdoc, props hakre dd32, see #10304
git-svn-id: http://svn.automattic.com/wordpress/trunk@11831 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
eb921e186d
commit
5c21d67399
|
@ -210,7 +210,7 @@ class WP_Filesystem_Base {
|
||||||
return trailingslashit($base . $last_path);
|
return trailingslashit($base . $last_path);
|
||||||
}
|
}
|
||||||
if ( $loop )
|
if ( $loop )
|
||||||
return false;//Prevent tihs function looping again.
|
return false; //Prevent tihs function looping again.
|
||||||
//As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups.
|
//As an extra last resort, Change back to / if the folder wasnt found. This comes into effect when the CWD is /home/user/ but WP is at /var/www/.... mainly dedicated setups.
|
||||||
return $this->search_for_folder($folder, '/', true);
|
return $this->search_for_folder($folder, '/', true);
|
||||||
|
|
||||||
|
@ -242,7 +242,7 @@ class WP_Filesystem_Base {
|
||||||
$info = 'd';
|
$info = 'd';
|
||||||
elseif (($perms & 0x2000) == 0x2000) // Character special
|
elseif (($perms & 0x2000) == 0x2000) // Character special
|
||||||
$info = 'c';
|
$info = 'c';
|
||||||
elseif (($perms & 0x1000) == 0x1000)// FIFO pipe
|
elseif (($perms & 0x1000) == 0x1000) // FIFO pipe
|
||||||
$info = 'p';
|
$info = 'p';
|
||||||
else // Unknown
|
else // Unknown
|
||||||
$info = 'u';
|
$info = 'u';
|
||||||
|
|
|
@ -15,38 +15,84 @@
|
||||||
* @uses WP_Filesystem_Base Extends class
|
* @uses WP_Filesystem_Base Extends class
|
||||||
*/
|
*/
|
||||||
class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
var $permission = null;
|
|
||||||
var $errors = null;
|
var $errors = null;
|
||||||
|
/**
|
||||||
|
* constructor
|
||||||
|
*
|
||||||
|
* @param $arg mixed ingored argument
|
||||||
|
*/
|
||||||
function WP_Filesystem_Direct($arg) {
|
function WP_Filesystem_Direct($arg) {
|
||||||
$this->method = 'direct';
|
$this->method = 'direct';
|
||||||
$this->errors = new WP_Error();
|
$this->errors = new WP_Error();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* connect filesystem.
|
||||||
|
*
|
||||||
|
* @return bool Returns true on success or false on failure (always true for WP_Filesystem_Direct).
|
||||||
|
*/
|
||||||
function connect() {
|
function connect() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
function setDefaultPermissions($perm) {
|
/**
|
||||||
$this->permission = $perm;
|
* Reads entire file into a string
|
||||||
}
|
*
|
||||||
|
* @param $file string Name of the file to read.
|
||||||
|
* @return string|bool The function returns the read data or false on failure.
|
||||||
|
*/
|
||||||
function get_contents($file) {
|
function get_contents($file) {
|
||||||
return @file_get_contents($file);
|
return @file_get_contents($file);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Reads entire file into an array
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @return array|bool the file contents in an array or false on failure.
|
||||||
|
*/
|
||||||
function get_contents_array($file) {
|
function get_contents_array($file) {
|
||||||
return @file($file);
|
return @file($file);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Write a string to a file
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file where to write the data.
|
||||||
|
* @param $contents string The data to write.
|
||||||
|
* @param $mode int (optional) The file permissions as octal number, usually 0644.
|
||||||
|
* @param $type string (optional) Specifies additional type of access you require to the file.
|
||||||
|
* @return bool False upon failure.
|
||||||
|
*/
|
||||||
function put_contents($file, $contents, $mode = false, $type = '') {
|
function put_contents($file, $contents, $mode = false, $type = '') {
|
||||||
if ( ! ($fp = @fopen($file, 'w' . $type)) )
|
if ( ! ($fp = @fopen($file, 'w' . $type)) )
|
||||||
return false;
|
return false;
|
||||||
@fwrite($fp, $contents);
|
@fwrite($fp, $contents);
|
||||||
@fclose($fp);
|
@fclose($fp);
|
||||||
$this->chmod($file,$mode);
|
$this->chmod($file, $mode);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gets the current working directory
|
||||||
|
*
|
||||||
|
* @return string|bool the current working directory on success, or false on failure.
|
||||||
|
*/
|
||||||
function cwd() {
|
function cwd() {
|
||||||
return @getcwd();
|
return @getcwd();
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Change directory
|
||||||
|
*
|
||||||
|
* @param $dir string The new current directory.
|
||||||
|
* @return bool Returns true on success or false on failure.
|
||||||
|
*/
|
||||||
function chdir($dir) {
|
function chdir($dir) {
|
||||||
return @chdir($dir);
|
return @chdir($dir);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Changes file group
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @param $group mixed A group name or number.
|
||||||
|
* @param $recursive bool (optional) If set True changes file group recursivly. Defaults to False.
|
||||||
|
* @return bool Returns true on success or false on failure.
|
||||||
|
*/
|
||||||
function chgrp($file, $group, $recursive = false) {
|
function chgrp($file, $group, $recursive = false) {
|
||||||
if ( ! $this->exists($file) )
|
if ( ! $this->exists($file) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -62,14 +108,20 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Changes filesystem permissions
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @param $mode int (optional) The permissions as octal number, usually 0644 for files, 0755 for dirs.
|
||||||
|
* @param $recursive bool (optional) If set True changes file group recursivly. Defaults to False.
|
||||||
|
* @return bool Returns true on success or false on failure.
|
||||||
|
*/
|
||||||
function chmod($file, $mode = false, $recursive = false) {
|
function chmod($file, $mode = false, $recursive = false) {
|
||||||
if ( ! $this->exists($file) )
|
if ( ! $this->exists($file) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ( ! $mode ) {
|
if ( ! $mode ) {
|
||||||
if ( $this->permission )
|
if ( $this->is_file($file) )
|
||||||
$mode = $this->permission;
|
|
||||||
elseif ( $this->is_file($file) )
|
|
||||||
$mode = FS_CHMOD_FILE;
|
$mode = FS_CHMOD_FILE;
|
||||||
elseif ( $this->is_dir($file) )
|
elseif ( $this->is_dir($file) )
|
||||||
$mode = FS_CHMOD_DIR;
|
$mode = FS_CHMOD_DIR;
|
||||||
|
@ -89,6 +141,14 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Changes file owner
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @param $owner mixed A user name or number.
|
||||||
|
* @param $recursive bool (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) {
|
function chown($file, $owner, $recursive = false) {
|
||||||
if ( ! $this->exists($file) )
|
if ( ! $this->exists($file) )
|
||||||
return false;
|
return false;
|
||||||
|
@ -98,11 +158,17 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
return @chown($file, $owner);
|
return @chown($file, $owner);
|
||||||
//Is a directory, and we want recursive
|
//Is a directory, and we want recursive
|
||||||
$filelist = $this->dirlist($file);
|
$filelist = $this->dirlist($file);
|
||||||
foreach ($filelist as $filename){
|
foreach ($filelist as $filename) {
|
||||||
$this->chown($file . '/' . $filename, $owner, $recursive);
|
$this->chown($file . '/' . $filename, $owner, $recursive);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gets file owner
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @return string Username of the user.
|
||||||
|
*/
|
||||||
function owner($file) {
|
function owner($file) {
|
||||||
$owneruid = @fileowner($file);
|
$owneruid = @fileowner($file);
|
||||||
if ( ! $owneruid )
|
if ( ! $owneruid )
|
||||||
|
@ -112,6 +178,14 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
$ownerarray = posix_getpwuid($owneruid);
|
$ownerarray = posix_getpwuid($owneruid);
|
||||||
return $ownerarray['name'];
|
return $ownerarray['name'];
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Gets file permissions
|
||||||
|
*
|
||||||
|
* FIXME does not handle errors in fileperms()
|
||||||
|
*
|
||||||
|
* @param $file string Path to the file.
|
||||||
|
* @return string Mode of the file (last 4 digits).
|
||||||
|
*/
|
||||||
function getchmod($file) {
|
function getchmod($file) {
|
||||||
return substr(decoct(@fileperms($file)),3);
|
return substr(decoct(@fileperms($file)),3);
|
||||||
}
|
}
|
||||||
|
@ -133,7 +207,7 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
|
|
||||||
function move($source, $destination, $overwrite = false) {
|
function move($source, $destination, $overwrite = false) {
|
||||||
//Possible to use rename()?
|
//Possible to use rename()?
|
||||||
if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ){
|
if ( $this->copy($source, $destination, $overwrite) && $this->exists($destination) ) {
|
||||||
$this->delete($source);
|
$this->delete($source);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -197,7 +271,7 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
return @filesize($file);
|
return @filesize($file);
|
||||||
}
|
}
|
||||||
|
|
||||||
function touch($file, $time = 0, $atime = 0){
|
function touch($file, $time = 0, $atime = 0) {
|
||||||
if ($time == 0)
|
if ($time == 0)
|
||||||
$time = time();
|
$time = time();
|
||||||
if ($atime == 0)
|
if ($atime == 0)
|
||||||
|
@ -205,7 +279,10 @@ class WP_Filesystem_Direct extends WP_Filesystem_Base {
|
||||||
return @touch($file, $time, $atime);
|
return @touch($file, $time, $atime);
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdir($path, $chmod = false, $chown = false, $chgrp = false){
|
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
|
||||||
|
if ( ! $chmod )
|
||||||
|
$chmod = FS_CHMOD_DIR;
|
||||||
|
|
||||||
if ( ! @mkdir($path) )
|
if ( ! @mkdir($path) )
|
||||||
return false;
|
return false;
|
||||||
$this->chmod($path, $chmod);
|
$this->chmod($path, $chmod);
|
||||||
|
|
|
@ -19,8 +19,6 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
var $errors = null;
|
var $errors = null;
|
||||||
var $options = array();
|
var $options = array();
|
||||||
|
|
||||||
var $permission = null;
|
|
||||||
|
|
||||||
function WP_Filesystem_FTPext($opt='') {
|
function WP_Filesystem_FTPext($opt='') {
|
||||||
$this->method = 'ftpext';
|
$this->method = 'ftpext';
|
||||||
$this->errors = new WP_Error();
|
$this->errors = new WP_Error();
|
||||||
|
@ -90,19 +88,15 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDefaultPermissions($perm) {
|
function get_contents($file, $type = '', $resumepos = 0 ) {
|
||||||
$this->permission = $perm;
|
if ( empty($type) )
|
||||||
}
|
|
||||||
|
|
||||||
function get_contents($file, $type = '', $resumepos = 0 ){
|
|
||||||
if( empty($type) )
|
|
||||||
$type = FTP_BINARY;
|
$type = FTP_BINARY;
|
||||||
|
|
||||||
$temp = tmpfile();
|
$temp = tmpfile();
|
||||||
if ( ! $temp )
|
if ( ! $temp )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) )
|
if ( ! @ftp_fget($this->link, $temp, $file, $type, $resumepos) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
fseek($temp, 0); //Skip back to the start of the file being written to
|
fseek($temp, 0); //Skip back to the start of the file being written to
|
||||||
|
@ -118,7 +112,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return explode("\n", $this->get_contents($file));
|
return explode("\n", $this->get_contents($file));
|
||||||
}
|
}
|
||||||
function put_contents($file, $contents, $type = '' ) {
|
function put_contents($file, $contents, $type = '' ) {
|
||||||
if( empty($type) )
|
if ( empty($type) )
|
||||||
$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
|
$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
|
||||||
|
|
||||||
$temp = tmpfile();
|
$temp = tmpfile();
|
||||||
|
@ -135,7 +129,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
function cwd() {
|
function cwd() {
|
||||||
$cwd = @ftp_pwd($this->link);
|
$cwd = @ftp_pwd($this->link);
|
||||||
if( $cwd )
|
if ( $cwd )
|
||||||
$cwd = trailingslashit($cwd);
|
$cwd = trailingslashit($cwd);
|
||||||
return $cwd;
|
return $cwd;
|
||||||
}
|
}
|
||||||
|
@ -146,12 +140,18 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
function chmod($file, $mode = false, $recursive = false) {
|
function chmod($file, $mode = false, $recursive = false) {
|
||||||
if( ! $mode )
|
|
||||||
$mode = $this->permission;
|
|
||||||
if( ! $mode )
|
|
||||||
return false;
|
|
||||||
if ( ! $this->exists($file) && ! $this->is_dir($file) )
|
if ( ! $this->exists($file) && ! $this->is_dir($file) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if ( ! $mode ) {
|
||||||
|
if ( $this->is_file($file) )
|
||||||
|
$mode = FS_CHMOD_FILE;
|
||||||
|
elseif ( $this->is_dir($file) )
|
||||||
|
$mode = FS_CHMOD_DIR;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! $recursive || ! $this->is_dir($file) ) {
|
if ( ! $recursive || ! $this->is_dir($file) ) {
|
||||||
if ( ! function_exists('ftp_chmod') )
|
if ( ! function_exists('ftp_chmod') )
|
||||||
return @ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file));
|
return @ftp_site($this->link, sprintf('CHMOD %o %s', $mode, $file));
|
||||||
|
@ -159,7 +159,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
//Is a directory, and we want recursive
|
//Is a directory, and we want recursive
|
||||||
$filelist = $this->dirlist($file);
|
$filelist = $this->dirlist($file);
|
||||||
foreach($filelist as $filename){
|
foreach ( $filelist as $filename ) {
|
||||||
$this->chmod($file . '/' . $filename, $mode, $recursive);
|
$this->chmod($file . '/' . $filename, $mode, $recursive);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -180,10 +180,10 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return $dir[$file]['group'];
|
return $dir[$file]['group'];
|
||||||
}
|
}
|
||||||
function copy($source, $destination, $overwrite = false ) {
|
function copy($source, $destination, $overwrite = false ) {
|
||||||
if( ! $overwrite && $this->exists($destination) )
|
if ( ! $overwrite && $this->exists($destination) )
|
||||||
return false;
|
return false;
|
||||||
$content = $this->get_contents($source);
|
$content = $this->get_contents($source);
|
||||||
if( false === $content)
|
if ( false === $content)
|
||||||
return false;
|
return false;
|
||||||
return $this->put_contents($destination, $content);
|
return $this->put_contents($destination, $content);
|
||||||
}
|
}
|
||||||
|
@ -216,7 +216,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
function is_dir($path) {
|
function is_dir($path) {
|
||||||
$cwd = $this->cwd();
|
$cwd = $this->cwd();
|
||||||
$result = @ftp_chdir($this->link, trailingslashit($path) );
|
$result = @ftp_chdir($this->link, trailingslashit($path) );
|
||||||
if( $result && $path == $this->cwd() || $this->cwd() != $cwd ) {
|
if ( $result && $path == $this->cwd() || $this->cwd() != $cwd ) {
|
||||||
@ftp_chdir($this->link, $cwd);
|
@ftp_chdir($this->link, $cwd);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -243,13 +243,14 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
|
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
|
||||||
if( !ftp_mkdir($this->link, $path) )
|
if ( !ftp_mkdir($this->link, $path) )
|
||||||
return false;
|
return false;
|
||||||
if( $chmod )
|
if ( ! $chmod )
|
||||||
$this->chmod($path, $chmod);
|
$chmod = FS_CHMOD_DIR;
|
||||||
if( $chown )
|
$this->chmod($path, $chmod);
|
||||||
|
if ( $chown )
|
||||||
$this->chown($path, $chown);
|
$this->chown($path, $chown);
|
||||||
if( $chgrp )
|
if ( $chgrp )
|
||||||
$this->chgrp($path, $chgrp);
|
$this->chgrp($path, $chgrp);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -262,9 +263,9 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
if ( is_null($is_windows) )
|
if ( is_null($is_windows) )
|
||||||
$is_windows = strpos( strtolower(ftp_systype($this->link)), 'win') !== false;
|
$is_windows = strpos( strtolower(ftp_systype($this->link)), 'win') !== false;
|
||||||
|
|
||||||
if ($is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|<DIR>) +(.+)/", $line, $lucifer)) {
|
if ( $is_windows && preg_match("/([0-9]{2})-([0-9]{2})-([0-9]{2}) +([0-9]{2}):([0-9]{2})(AM|PM) +([0-9]+|<DIR>) +(.+)/", $line, $lucifer) ) {
|
||||||
$b = array();
|
$b = array();
|
||||||
if ($lucifer[3]<70) { $lucifer[3] +=2000; } else { $lucifer[3]+=1900; } // 4digit year fix
|
if ( $lucifer[3] < 70 ) { $lucifer[3] +=2000; } else { $lucifer[3] += 1900; } // 4digit year fix
|
||||||
$b['isdir'] = ($lucifer[7]=="<DIR>");
|
$b['isdir'] = ($lucifer[7]=="<DIR>");
|
||||||
if ( $b['isdir'] )
|
if ( $b['isdir'] )
|
||||||
$b['type'] = 'd';
|
$b['type'] = 'd';
|
||||||
|
@ -323,7 +324,7 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function dirlist($path = '.', $incdot = false, $recursive = false) {
|
function dirlist($path = '.', $incdot = false, $recursive = false) {
|
||||||
if( $this->is_file($path) ) {
|
if ( $this->is_file($path) ) {
|
||||||
$limitFile = basename($path);
|
$limitFile = basename($path);
|
||||||
$path = dirname($path) . '/';
|
$path = dirname($path) . '/';
|
||||||
} else {
|
} else {
|
||||||
|
@ -358,9 +359,9 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
if ( 'd' == $struc['type'] ) {
|
if ( 'd' == $struc['type'] ) {
|
||||||
$struc['files'] = array();
|
$struc['files'] = array();
|
||||||
|
|
||||||
if ( $incdot ){
|
if ( $incdot ) {
|
||||||
//We're including the doted starts
|
//We're including the doted starts
|
||||||
if( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
|
if ( '.' != $struc['name'] && '..' != $struc['name'] ) { //Ok, It isnt a special folder
|
||||||
if ($recursive)
|
if ($recursive)
|
||||||
$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
|
$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
|
||||||
}
|
}
|
||||||
|
@ -375,8 +376,8 @@ class WP_Filesystem_FTPext extends WP_Filesystem_Base {
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
function __destruct(){
|
function __destruct() {
|
||||||
if( $this->link )
|
if ( $this->link )
|
||||||
ftp_close($this->link);
|
ftp_close($this->link);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,14 +19,12 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
var $errors = null;
|
var $errors = null;
|
||||||
var $options = array();
|
var $options = array();
|
||||||
|
|
||||||
var $permission = null;
|
|
||||||
|
|
||||||
function WP_Filesystem_ftpsockets($opt = '') {
|
function WP_Filesystem_ftpsockets($opt = '') {
|
||||||
$this->method = 'ftpsockets';
|
$this->method = 'ftpsockets';
|
||||||
$this->errors = new WP_Error();
|
$this->errors = new WP_Error();
|
||||||
|
|
||||||
//Check if possible to use ftp functions.
|
//Check if possible to use ftp functions.
|
||||||
if( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' )
|
if ( ! @include_once ABSPATH . 'wp-admin/includes/class-ftp.php' )
|
||||||
return false;
|
return false;
|
||||||
$this->ftp = new ftp();
|
$this->ftp = new ftp();
|
||||||
|
|
||||||
|
@ -83,15 +81,11 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDefaultPermissions($perm) {
|
|
||||||
$this->permission = $perm;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_contents($file, $type = '', $resumepos = 0) {
|
function get_contents($file, $type = '', $resumepos = 0) {
|
||||||
if( ! $this->exists($file) )
|
if ( ! $this->exists($file) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if( empty($type) )
|
if ( empty($type) )
|
||||||
$type = FTP_AUTOASCII;
|
$type = FTP_AUTOASCII;
|
||||||
$this->ftp->SetType($type);
|
$this->ftp->SetType($type);
|
||||||
|
|
||||||
|
@ -122,7 +116,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function put_contents($file, $contents, $type = '' ) {
|
function put_contents($file, $contents, $type = '' ) {
|
||||||
if( empty($type) )
|
if ( empty($type) )
|
||||||
$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
|
$type = $this->is_binary($contents) ? FTP_BINARY : FTP_ASCII;
|
||||||
|
|
||||||
$this->ftp->SetType($type);
|
$this->ftp->SetType($type);
|
||||||
|
@ -145,7 +139,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
|
|
||||||
function cwd() {
|
function cwd() {
|
||||||
$cwd = $this->ftp->pwd();
|
$cwd = $this->ftp->pwd();
|
||||||
if( $cwd )
|
if ( $cwd )
|
||||||
$cwd = trailingslashit($cwd);
|
$cwd = trailingslashit($cwd);
|
||||||
return $cwd;
|
return $cwd;
|
||||||
}
|
}
|
||||||
|
@ -159,14 +153,18 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function chmod($file, $mode = false, $recursive = false ) {
|
function chmod($file, $mode = false, $recursive = false ) {
|
||||||
if( ! $mode )
|
|
||||||
$mode = $this->permission;
|
if ( ! $mode ) {
|
||||||
if( ! $mode )
|
if ( $this->is_file($file) )
|
||||||
return false;
|
$mode = FS_CHMOD_FILE;
|
||||||
//if( ! $this->exists($file) )
|
elseif ( $this->is_dir($file) )
|
||||||
// return false;
|
$mode = FS_CHMOD_DIR;
|
||||||
if( ! $recursive || ! $this->is_dir($file) ) {
|
else
|
||||||
return $this->ftp->chmod($file,$mode);
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ! $recursive || ! $this->is_dir($file) ) {
|
||||||
|
return $this->ftp->chmod($file, $mode);
|
||||||
}
|
}
|
||||||
//Is a directory, and we want recursive
|
//Is a directory, and we want recursive
|
||||||
$filelist = $this->dirlist($file);
|
$filelist = $this->dirlist($file);
|
||||||
|
@ -196,7 +194,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function copy($source, $destination, $overwrite = false ) {
|
function copy($source, $destination, $overwrite = false ) {
|
||||||
if( ! $overwrite && $this->exists($destination) )
|
if ( ! $overwrite && $this->exists($destination) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
$content = $this->get_contents($source);
|
$content = $this->get_contents($source);
|
||||||
|
@ -265,26 +263,27 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) {
|
function mkdir($path, $chmod = false, $chown = false, $chgrp = false ) {
|
||||||
if( ! $this->ftp->mkdir($path) )
|
if ( ! $this->ftp->mkdir($path) )
|
||||||
return false;
|
return false;
|
||||||
if( $chmod )
|
if ( ! $chmod )
|
||||||
$this->chmod($path, $chmod);
|
$chmod = FS_CHMOD_DIR;
|
||||||
if( $chown )
|
$this->chmod($path, $chmod);
|
||||||
|
if ( $chown )
|
||||||
$this->chown($path, $chown);
|
$this->chown($path, $chown);
|
||||||
if( $chgrp )
|
if ( $chgrp )
|
||||||
$this->chgrp($path, $chgrp);
|
$this->chgrp($path, $chgrp);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function rmdir($path, $recursive = false ) {
|
function rmdir($path, $recursive = false ) {
|
||||||
if( ! $recursive )
|
if ( ! $recursive )
|
||||||
return $this->ftp->rmdir($path);
|
return $this->ftp->rmdir($path);
|
||||||
|
|
||||||
return $this->ftp->mdel($path);
|
return $this->ftp->mdel($path);
|
||||||
}
|
}
|
||||||
|
|
||||||
function dirlist($path = '.', $incdot = false, $recursive = false ) {
|
function dirlist($path = '.', $incdot = false, $recursive = false ) {
|
||||||
if( $this->is_file($path) ) {
|
if ( $this->is_file($path) ) {
|
||||||
$limitFile = basename($path);
|
$limitFile = basename($path);
|
||||||
$path = dirname($path) . '/';
|
$path = dirname($path) . '/';
|
||||||
} else {
|
} else {
|
||||||
|
@ -292,9 +291,9 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
$list = $this->ftp->dirlist($path);
|
$list = $this->ftp->dirlist($path);
|
||||||
if( ! $list )
|
if ( ! $list )
|
||||||
return false;
|
return false;
|
||||||
if( empty($list) )
|
if ( empty($list) )
|
||||||
return array();
|
return array();
|
||||||
|
|
||||||
$ret = array();
|
$ret = array();
|
||||||
|
@ -305,7 +304,7 @@ class WP_Filesystem_ftpsockets extends WP_Filesystem_Base {
|
||||||
|
|
||||||
if ( $incdot ){
|
if ( $incdot ){
|
||||||
//We're including the doted starts
|
//We're including the doted starts
|
||||||
if( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
|
if ( '.' != $struc['name'] && '..' != $struc['name'] ){ //Ok, It isnt a special folder
|
||||||
if ($recursive)
|
if ($recursive)
|
||||||
$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
|
$struc['files'] = $this->dirlist($path . '/' . $struc['name'], $incdot, $recursive);
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,8 +48,6 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
|
||||||
var $errors = array();
|
var $errors = array();
|
||||||
var $options = array();
|
var $options = array();
|
||||||
|
|
||||||
var $permission = 0644;
|
|
||||||
|
|
||||||
function WP_Filesystem_SSH2($opt='') {
|
function WP_Filesystem_SSH2($opt='') {
|
||||||
$this->method = 'ssh2';
|
$this->method = 'ssh2';
|
||||||
$this->errors = new WP_Error();
|
$this->errors = new WP_Error();
|
||||||
|
@ -152,12 +150,6 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDefaultPermissions($perm) {
|
|
||||||
$this->debug("setDefaultPermissions();");
|
|
||||||
if ( $perm )
|
|
||||||
$this->permission = $perm;
|
|
||||||
}
|
|
||||||
|
|
||||||
function get_contents($file, $type = '', $resumepos = 0 ) {
|
function get_contents($file, $type = '', $resumepos = 0 ) {
|
||||||
$file = ltrim($file, '/');
|
$file = ltrim($file, '/');
|
||||||
return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file);
|
return file_get_contents('ssh2.sftp://' . $this->sftp_link . '/' . $file);
|
||||||
|
@ -193,12 +185,18 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
|
||||||
}
|
}
|
||||||
|
|
||||||
function chmod($file, $mode = false, $recursive = false) {
|
function chmod($file, $mode = false, $recursive = false) {
|
||||||
if( ! $mode )
|
|
||||||
$mode = $this->permission;
|
|
||||||
if( ! $mode )
|
|
||||||
return false;
|
|
||||||
if ( ! $this->exists($file) )
|
if ( ! $this->exists($file) )
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if ( ! $mode ) {
|
||||||
|
if ( $this->is_file($file) )
|
||||||
|
$mode = FS_CHMOD_FILE;
|
||||||
|
elseif ( $this->is_dir($file) )
|
||||||
|
$mode = FS_CHMOD_DIR;
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if ( ! $recursive || ! $this->is_dir($file) )
|
if ( ! $recursive || ! $this->is_dir($file) )
|
||||||
return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true);
|
return $this->run_command(sprintf('chmod %o %s', $mode, escapeshellarg($file)), true);
|
||||||
return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true);
|
return $this->run_command(sprintf('chmod -R %o %s', $mode, escapeshellarg($file)), true);
|
||||||
|
@ -307,9 +305,10 @@ class WP_Filesystem_SSH2 extends WP_Filesystem_Base {
|
||||||
//Not implmented.
|
//Not implmented.
|
||||||
}
|
}
|
||||||
|
|
||||||
function mkdir($path, $chmod = null, $chown = false, $chgrp = false) {
|
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) {
|
||||||
$path = untrailingslashit($path);
|
$path = untrailingslashit($path);
|
||||||
$chmod = !empty($chmod) ? $chmod : $this->permission;
|
if ( ! $chmod )
|
||||||
|
$chmod = FS_CHMOD_DIR;
|
||||||
if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) )
|
if ( ! ssh2_sftp_mkdir($this->sftp_link, $path, $chmod, true) )
|
||||||
return false;
|
return false;
|
||||||
if ( $chown )
|
if ( $chown )
|
||||||
|
|
Loading…
Reference in New Issue