From 77c423d27bcd255f5490d1592ed104d09e2040c6 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Wed, 7 Jul 2010 15:13:09 +0200 Subject: [PATCH] Only connect to a remote ownCloud when we are actually using it --- inc/lib_remotestorage.php | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/inc/lib_remotestorage.php b/inc/lib_remotestorage.php index 882f281e413..f8835c1641a 100644 --- a/inc/lib_remotestorage.php +++ b/inc/lib_remotestorage.php @@ -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); } -- 2.39.5