Skip to content
Snippets Groups Projects
Commit a1539dac authored by Robin Appelman's avatar Robin Appelman
Browse files

share code between smb and ftp filestorage backends

parent f00a50c7
No related branches found
No related tags found
No related merge requests found
......@@ -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';
......
......@@ -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));
}
}
......@@ -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));
}
}
<?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));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment