]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix WebDAV external storage opendir() and stat() for directories, bug fix for oc...
authorMichael Gapczynski <mtgap@owncloud.com>
Fri, 29 Jun 2012 17:00:41 +0000 (13:00 -0400)
committerMichael Gapczynski <mtgap@owncloud.com>
Fri, 29 Jun 2012 17:01:00 +0000 (13:01 -0400)
apps/files_external/lib/webdav.php

index 94d9abb6a253e2d76108ce025cf911fd6e9c8d9a..d0fe2aca8541537b81a32cfa52beecf1b9474639 100644 (file)
@@ -73,13 +73,15 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
                        $stripLength=strlen($this->root)+strlen($path);
                        $id=md5('webdav'.$this->root.$path);
                        OC_FakeDirStream::$dirs[$id]=array();
+                       $skip = true;
                        foreach($response as $file=>$data){
-                               //strip root and path
-                               $file=trim(substr($file,$stripLength));
-                               $file=trim($file,'/');
-                               if($file){
-                                       OC_FakeDirStream::$dirs[$id][]=$file;
+                               // Skip the first file, because it is the current directory
+                               if ($skip) {
+                                       $skip = false;
+                                       continue;
                                }
+                               $file = urldecode(basename($file));
+                               OC_FakeDirStream::$dirs[$id][]=$file;
                        }
                        return opendir('fakedir://'.$id);
                }catch(Exception $e){
@@ -244,15 +246,11 @@ class OC_FileStorage_DAV extends OC_Filestorage_Common{
                $path=$this->cleanPath($path);
                try{
                        $response=$this->client->propfind($path, array('{DAV:}getlastmodified','{DAV:}getcontentlength'));
-                       if(isset($response['{DAV:}getlastmodified']) and isset($response['{DAV:}getcontentlength'])){
-                               return array(
-                                       'mtime'=>strtotime($response['{DAV:}getlastmodified']),
-                                       'size'=>(int)$response['{DAV:}getcontentlength'],
-                                       'ctime'=>-1,
-                               );
-                       }else{
-                               return array();
-                       }
+                       return array(
+                               'mtime'=>strtotime($response['{DAV:}getlastmodified']),
+                               'size'=>(int)isset($response['{DAV:}getcontentlength']) ? $response['{DAV:}getcontentlength'] : 0,
+                               'ctime'=>-1,
+                       );
                }catch(Exception $e){
                        return array();
                }