private $url;
private $username;
private $password;
- private $remote;
+ private $remote=false;
private $statCache;
private $statCacheDir=false;
private $changed=array();
$this->url=$arguments['url'];
$this->username=$arguments['username'];
$this->password=$arguments['password'];
- $this->remote=OC_CONNECT::connect($this->url,$this->username,$this->password);
+ }
+ private function connect(){
+ if($this->remote===false){
+ $this->remote=OC_CONNECT::connect($this->url,$this->username,$this->password);
+ }
}
public function mkdir($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$return=$this->remote->newFile($parent,$name,'dir');
return $return;
}
public function rmdir($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$return=$this->remote->delete($parent,$name);
return $return;
}
public function opendir($path){
+ $this->connect();
$this->cacheDir($path);
$dirs=array_keys($this->statCache);
$id=uniqid();
return $return;
}
public function is_dir($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($path);
return ($this->statCache[$name]['type'=='dir']);
}
public function is_file($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return ($this->statCache[$name]['type'!='dir']);
}
public function stat($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name];
}
public function filetype($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['type'];
}
public function filesize($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['size'];
}
public function is_readable($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['readable'];
}
public function is_writeable($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['writeable'];
}
public function file_exists($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return isset($this->statCache[$name]);
}
public function readfile($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$file=$this->remote->getFile($parent,$name);
unlink($file);
}
public function filectime($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['ctime'];
}
public function filemtime($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['mtime'];
}
public function fileatime($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$this->cacheDir($parent);
return $this->statCache[$name]['atime'];
}
public function file_get_contents($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$file=$this->remote->getFile($parent,$name);
unlink($file);
}
public function file_put_contents($path,$data){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
$file=$this->remote->getFile($parent,$name);
}
}
public function unlink($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
if($return=$this->remote->delete($paren,$name)){
return $return;
}
public function rename($path1,$path2){
+ $this->connect();
$parent1=dirname($path1);
$name1=substr($path1,strlen($parent1)+1);
$parent2=dirname($path2);
return $return;
}
public function copy($path1,$path2){
+ $this->connect();
$parent1=dirname($path1);
$name1=substr($path1,strlen($parent1)+1);
$parent2=dirname($path2);
return $return;
}
public function fopen($path,$mode){
+ $this->connect();
$changed=false;
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
}
public function getMimeType($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
if(substr($name,0,1)=='/'){
}
public function toTmpFile($path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
if(substr($name,0,1)=='/'){
}
public function fromTmpFile($tmpFile,$path){
+ $this->connect();
$parent=dirname($path);
$name=substr($path,strlen($parent)+1);
if($this->remote->sendTmpFile($tmpFile,$parent,$name)){
}
public function delTree($dir) {
+ $this->connect();
$parent=dirname($dir);
$name=substr($dir,strlen($parent)+1);
$return=$this->remote->delete($parent,$name);
}
public function getTree($dir) {
+ $this->connect();
if($return=$this->remote->getTree($dir)){
$this->notifyObservers($dir,OC_FILEACTION_READ);
}