]> source.dussan.org Git - nextcloud-server.git/commitdiff
share code between smb and ftp filestorage backends
authorRobin Appelman <icewind@owncloud.com>
Thu, 24 May 2012 17:39:14 +0000 (19:39 +0200)
committerRobin Appelman <icewind@owncloud.com>
Tue, 10 Jul 2012 12:19:40 +0000 (14:19 +0200)
apps/files_external/appinfo/app.php
apps/files_external/lib/ftp.php
apps/files_external/lib/smb.php
apps/files_external/lib/streamwrapper.php [new file with mode: 0644]

index fac042232a4c14834777c7ddfdc5376abf490f36..87846f1713855e4bef7297ab78a1b411ec94a9e6 100644 (file)
@@ -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';
index c431070e24b37632c1fa7b1e304823d9d62a21a1..4d5ae670de59c2ff341671e15365f8362d621795 100644 (file)
@@ -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));
-       }
 }
index c769d29032dd8d6524a82e62192ba6c4debd95c3..f5e6d78e7761ab3699fc4524021cee126216d1f5 100644 (file)
@@ -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 (file)
index 0000000..7d56445
--- /dev/null
@@ -0,0 +1,89 @@
+<?php
+/**
+ * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
+ * 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));
+       }
+
+
+
+}