From: Robin Appelman Date: Thu, 24 May 2012 17:39:14 +0000 (+0200) Subject: share code between smb and ftp filestorage backends X-Git-Tag: v4.0.5~27 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8fcce55e76d3201c01cec1eb6024a887696eb800;p=nextcloud-server.git share code between smb and ftp filestorage backends --- diff --git a/apps/files_external/appinfo/app.php b/apps/files_external/appinfo/app.php index fac042232a4..87846f17138 100644 --- a/apps/files_external/appinfo/app.php +++ b/apps/files_external/appinfo/app.php @@ -6,6 +6,7 @@ * See the COPYING-README file. */ + OC::$CLASSPATH['OC_FileStorage_StreamWrapper']='apps/files_external/lib/streamwrapper.php'; OC::$CLASSPATH['OC_Filestorage_FTP']='apps/files_external/lib/ftp.php'; OC::$CLASSPATH['OC_Filestorage_DAV']='apps/files_external/lib/webdav.php'; OC::$CLASSPATH['OC_Filestorage_Google']='apps/files_external/lib/google.php'; diff --git a/apps/files_external/lib/ftp.php b/apps/files_external/lib/ftp.php index c431070e24b..4d5ae670de5 100644 --- a/apps/files_external/lib/ftp.php +++ b/apps/files_external/lib/ftp.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -class OC_FileStorage_FTP extends OC_Filestorage_Common{ +class OC_FileStorage_FTP extends OC_FileStorage_StreamWrapper{ private $password; private $user; private $host; @@ -42,47 +42,6 @@ class OC_FileStorage_FTP extends OC_Filestorage_Common{ $url.='://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; return $url; } - - public function mkdir($path){ - return mkdir($this->constructUrl($path)); - } - - public function rmdir($path){ - if($this->file_exists($path)){ - $succes=rmdir($this->constructUrl($path)); - clearstatcache(); - return $succes; - }else{ - return false; - } - } - - public function opendir($path){ - return opendir($this->constructUrl($path)); - } - - public function filetype($path){ - return filetype($this->constructUrl($path)); - } - - public function is_readable($path){ - return true;//not properly supported - } - - public function is_writable($path){ - return true;//not properly supported - } - - public function file_exists($path){ - return file_exists($this->constructUrl($path)); - } - - public function unlink($path){ - $succes=unlink($this->constructUrl($path)); - clearstatcache(); - return $succes; - } - public function fopen($path,$mode){ switch($mode){ case 'r': @@ -124,34 +83,4 @@ class OC_FileStorage_FTP extends OC_Filestorage_Common{ unlink($tmpFile); } } - - public function free_space($path){ - return 0; - } - - public function touch($path,$mtime=null){ - if(is_null($mtime)){ - $fh=$this->fopen($path,'a'); - fwrite($fh,''); - fclose($fh); - }else{ - return false;//not supported - } - } - - public function getFile($path,$target){ - return copy($this->constructUrl($path),$target); - } - - public function uploadFile($path,$target){ - return copy($path,$this->constructUrl($target)); - } - - public function rename($path1,$path2){ - return rename($this->constructUrl($path1),$this->constructUrl($path2)); - } - - public function stat($path){ - return stat($this->constructUrl($path)); - } } diff --git a/apps/files_external/lib/smb.php b/apps/files_external/lib/smb.php index c769d29032d..f5e6d78e776 100644 --- a/apps/files_external/lib/smb.php +++ b/apps/files_external/lib/smb.php @@ -8,7 +8,7 @@ require_once('smb4php/smb.php'); -class OC_FileStorage_SMB extends OC_Filestorage_Common{ +class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ private $password; private $user; private $host; @@ -33,88 +33,4 @@ class OC_FileStorage_SMB extends OC_Filestorage_Common{ return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->root.$path; } - - public function mkdir($path){ - return mkdir($this->constructUrl($path)); - } - - public function rmdir($path){ - if($this->file_exists($path)){ - $succes=rmdir($this->constructUrl($path)); - clearstatcache(); - return $succes; - }else{ - return false; - } - } - - public function opendir($path){ - return opendir($this->constructUrl($path)); - } - - public function filetype($path){ - return filetype($this->constructUrl($path)); - } - - public function is_readable($path){ - return true;//not properly supported - } - - public function is_writable($path){ - return true;//not properly supported - } - - public function file_exists($path){ - return file_exists($this->constructUrl($path)); - } - - public function unlink($path){ - $succes=unlink($this->constructUrl($path)); - clearstatcache(); - return $succes; - } - - public function fopen($path,$mode){ - return fopen($this->constructUrl($path),$mode); - } - - public function writeBack($tmpFile){ - if(isset(self::$tempFiles[$tmpFile])){ - $this->uploadFile($tmpFile,self::$tempFiles[$tmpFile]); - unlink($tmpFile); - } - } - - public function free_space($path){ - return 0; - } - - public function touch($path,$mtime=null){ - if(is_null($mtime)){ - $fh=$this->fopen($path,'a'); - fwrite($fh,''); - fclose($fh); - }else{ - return false;//not supported - } - } - - public function getFile($path,$target){ - return copy($this->constructUrl($path),$target); - } - - public function uploadFile($path,$target){ - return copy($path,$this->constructUrl($target)); - } - - public function rename($path1,$path2){ - return rename($this->constructUrl($path1),$this->constructUrl($path2)); - } - - public function stat($path){ - return stat($this->constructUrl($path)); - } - - - } diff --git a/apps/files_external/lib/streamwrapper.php b/apps/files_external/lib/streamwrapper.php new file mode 100644 index 00000000000..7d56445361e --- /dev/null +++ b/apps/files_external/lib/streamwrapper.php @@ -0,0 +1,89 @@ + + * This file is licensed under the Affero General Public License version 3 or + * later. + * See the COPYING-README file. + */ + + +abstract class OC_FileStorage_StreamWrapper extends OC_Filestorage_Common{ + abstract public function constructUrl($path); + + public function mkdir($path){ + return mkdir($this->constructUrl($path)); + } + + public function rmdir($path){ + if($this->file_exists($path)){ + $succes=rmdir($this->constructUrl($path)); + clearstatcache(); + return $succes; + }else{ + return false; + } + } + + public function opendir($path){ + return opendir($this->constructUrl($path)); + } + + public function filetype($path){ + return filetype($this->constructUrl($path)); + } + + public function is_readable($path){ + return true;//not properly supported + } + + public function is_writable($path){ + return true;//not properly supported + } + + public function file_exists($path){ + return file_exists($this->constructUrl($path)); + } + + public function unlink($path){ + $succes=unlink($this->constructUrl($path)); + clearstatcache(); + return $succes; + } + + public function fopen($path,$mode){ + return fopen($this->constructUrl($path),$mode); + } + + public function free_space($path){ + return 0; + } + + public function touch($path,$mtime=null){ + if(is_null($mtime)){ + $fh=$this->fopen($path,'a'); + fwrite($fh,''); + fclose($fh); + }else{ + return false;//not supported + } + } + + public function getFile($path,$target){ + return copy($this->constructUrl($path),$target); + } + + public function uploadFile($path,$target){ + return copy($path,$this->constructUrl($target)); + } + + public function rename($path1,$path2){ + return rename($this->constructUrl($path1),$this->constructUrl($path2)); + } + + public function stat($path){ + return stat($this->constructUrl($path)); + } + + + +}