]> source.dussan.org Git - nextcloud-server.git/commitdiff
Only connect to a remote ownCloud when we are actually using it
authorRobin Appelman <icewind1991@gmail.com>
Wed, 7 Jul 2010 13:13:09 +0000 (15:13 +0200)
committerRobin Appelman <icewind1991@gmail.com>
Wed, 7 Jul 2010 13:13:09 +0000 (15:13 +0200)
inc/lib_remotestorage.php

index 882f281e4137c0bc05daedb156a35870320e3594..f8835c1641a4cafe50476bbc0a02414478c968a9 100644 (file)
@@ -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);
                }