]> source.dussan.org Git - nextcloud-server.git/commitdiff
Keep fileid on move in objectstore, fixes #10848
authorJörn Friedrich Dreyer <jfd@butonic.de>
Fri, 5 Sep 2014 11:25:59 +0000 (13:25 +0200)
committerJörn Friedrich Dreyer <jfd@butonic.de>
Fri, 5 Sep 2014 11:25:59 +0000 (13:25 +0200)
lib/private/files/objectstore/objectstorestorage.php

index 0292d7770648cc2979cd6ea0b06c25a015a9bfd8..241864bcccd91e2e4ec2e401321ff73646ac690b 100644 (file)
@@ -82,7 +82,7 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
                        $parentExists = true;
 
                        // we are done when the root folder was meant to be created
-                       if  ($dirName === $path) {
+                       if ($dirName === $path) {
                                return true;
                        }
                }
@@ -290,38 +290,10 @@ class ObjectStoreStorage extends \OC\Files\Storage\Common {
        public function rename($source, $target) {
                $source = $this->normalizePath($source);
                $target = $this->normalizePath($target);
-               $stat1 = $this->stat($source);
-               if (isset($stat1['mimetype']) && $stat1['mimetype'] === 'httpd/unix-directory') {
-                       $this->remove($target);
-                       $dir = $this->opendir($source);
-                       $this->mkdir($target);
-                       while ($file = readdir($dir)) {
-                               if (!Filesystem::isIgnoredDir($file)) {
-                                       if (!$this->rename($source . '/' . $file, $target . '/' . $file)) {
-                                               return false;
-                                       }
-                               }
-                       }
-                       closedir($dir);
-                       $this->remove($source);
-                       return true;
-               } else {
-                       if (is_array($stat1)) {
-                               $parent = $this->stat(dirname($target));
-                               if (is_array($parent)) {
-                                       $this->remove($target);
-                                       $stat1['parent'] = $parent['fileid'];
-                                       $stat1['path'] = $target;
-                                       $stat1['path_hash'] = md5($target);
-                                       $stat1['name'] = \OC_Util::basename($target);
-                                       $stat1['mtime'] = time();
-                                       $stat1['etag'] = $this->getETag($target);
-                                       $this->getCache()->update($stat1['fileid'], $stat1);
-                                       return true;
-                               }
-                       }
-               }
-               return false;
+               $this->remove($target);
+               $this->getCache()->move($source, $target);
+               $this->touch(dirname($target));
+               return true;
        }
 
        public function getMimeType($path) {