mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 09:42:09 -04:00
Only connect to a remote ownCloud when we are actually using it
This commit is contained in:
parent
b38aa771d1
commit
77c423d27b
1 changed files with 32 additions and 2 deletions
|
|
@ -26,7 +26,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
private $url;
|
||||
private $username;
|
||||
private $password;
|
||||
private $remote;
|
||||
private $remote=false;
|
||||
private $statCache;
|
||||
private $statCacheDir=false;
|
||||
private $changed=array();
|
||||
|
|
@ -43,9 +43,14 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
$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');
|
||||
|
|
@ -55,6 +60,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function rmdir($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$return=$this->remote->delete($parent,$name);
|
||||
|
|
@ -64,6 +70,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function opendir($path){
|
||||
$this->connect();
|
||||
$this->cacheDir($path);
|
||||
$dirs=array_keys($this->statCache);
|
||||
$id=uniqid();
|
||||
|
|
@ -75,6 +82,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function is_dir($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($path);
|
||||
|
|
@ -87,6 +95,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
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);
|
||||
|
|
@ -96,6 +105,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return ($this->statCache[$name]['type'!='dir']);
|
||||
}
|
||||
public function stat($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -105,6 +115,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name];
|
||||
}
|
||||
public function filetype($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -114,6 +125,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name]['type'];
|
||||
}
|
||||
public function filesize($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -123,6 +135,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name]['size'];
|
||||
}
|
||||
public function is_readable($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -132,6 +145,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name]['readable'];
|
||||
}
|
||||
public function is_writeable($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -141,12 +155,14 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
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);
|
||||
|
|
@ -154,6 +170,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
unlink($file);
|
||||
}
|
||||
public function filectime($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -163,6 +180,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name]['ctime'];
|
||||
}
|
||||
public function filemtime($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -172,6 +190,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $this->statCache[$name]['mtime'];
|
||||
}
|
||||
public function fileatime($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
$this->cacheDir($parent);
|
||||
|
|
@ -181,6 +200,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
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);
|
||||
|
|
@ -188,6 +208,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
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);
|
||||
|
|
@ -198,6 +219,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
}
|
||||
public function unlink($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
if($return=$this->remote->delete($paren,$name)){
|
||||
|
|
@ -206,6 +228,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function rename($path1,$path2){
|
||||
$this->connect();
|
||||
$parent1=dirname($path1);
|
||||
$name1=substr($path1,strlen($parent1)+1);
|
||||
$parent2=dirname($path2);
|
||||
|
|
@ -216,6 +239,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function copy($path1,$path2){
|
||||
$this->connect();
|
||||
$parent1=dirname($path1);
|
||||
$name1=substr($path1,strlen($parent1)+1);
|
||||
$parent2=dirname($path2);
|
||||
|
|
@ -226,6 +250,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
return $return;
|
||||
}
|
||||
public function fopen($path,$mode){
|
||||
$this->connect();
|
||||
$changed=false;
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
|
|
@ -254,6 +279,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
|
||||
public function getMimeType($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
if(substr($name,0,1)=='/'){
|
||||
|
|
@ -267,6 +293,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
|
||||
public function toTmpFile($path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
if(substr($name,0,1)=='/'){
|
||||
|
|
@ -282,6 +309,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
|
||||
public function fromTmpFile($tmpFile,$path){
|
||||
$this->connect();
|
||||
$parent=dirname($path);
|
||||
$name=substr($path,strlen($parent)+1);
|
||||
if($this->remote->sendTmpFile($tmpFile,$parent,$name)){
|
||||
|
|
@ -293,6 +321,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
|
||||
public function delTree($dir) {
|
||||
$this->connect();
|
||||
$parent=dirname($dir);
|
||||
$name=substr($dir,strlen($parent)+1);
|
||||
$return=$this->remote->delete($parent,$name);
|
||||
|
|
@ -307,6 +336,7 @@ class OC_FILESTORAGE_REMOTE extends OC_FILESTORAGE{
|
|||
}
|
||||
|
||||
public function getTree($dir) {
|
||||
$this->connect();
|
||||
if($return=$this->remote->getTree($dir)){
|
||||
$this->notifyObservers($dir,OC_FILEACTION_READ);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue