]> source.dussan.org Git - nextcloud-server.git/commitdiff
handle part files correctly
authorBjoern Schiessle <schiessle@owncloud.com>
Thu, 22 Aug 2013 15:55:10 +0000 (17:55 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Fri, 6 Sep 2013 14:04:56 +0000 (16:04 +0200)
apps/files_encryption/lib/util.php

index b8d6862349395efa1a02b7039b267cee87faa700..73191de5681c17fde5f53d0ddbeeee665d00181e 100644 (file)
@@ -1289,8 +1289,24 @@ class Util {
         */
        public function getUidAndFilename($path) {
 
+               $pathinfo = pathinfo($path);
+               $partfile = false;
+               $parentFolder = false;
+               if ($pathinfo['extension'] === 'part') {
+                       // if the real file exists we check this file
+                       if ($this->view->file_exists($this->userFilesDir . '/' . $pathinfo['dirname'] . '/' . $pathinfo['filename'])) {
+                               $pathToCheck = $pathinfo['dirname'] . '/' . $pathinfo['filename'];
+                       } else { // otherwise we look for the parent
+                               $pathToCheck = $pathinfo['dirname'];
+                               $parentFolder = true;
+                       }
+                       $partfile = true;
+               } else {
+                       $pathToCheck = $path;
+               }
+
                $view = new \OC\Files\View($this->userFilesDir);
-               $fileOwnerUid = $view->getOwner($path);
+               $fileOwnerUid = $view->getOwner($pathToCheck);
 
                // handle public access
                if ($this->isPublic) {
@@ -1319,12 +1335,18 @@ class Util {
                                $filename = $path;
 
                        } else {
-
-                               $info = $view->getFileInfo($path);
+                               $info = $view->getFileInfo($pathToCheck);
                                $ownerView = new \OC\Files\View('/' . $fileOwnerUid . '/files');
 
                                // Fetch real file path from DB
-                               $filename = $ownerView->getPath($info['fileid']); // TODO: Check that this returns a path without including the user data dir
+                               $filename = $ownerView->getPath($info['fileid']);
+                               if ($parentFolder) {
+                                       $filename = $filename . '/'. $pathinfo['filename'];
+                               }
+
+                               if ($partfile) {
+                                       $filename = $filename . '.' . $pathinfo['extension'];
+                               }
 
                        }
 
@@ -1333,10 +1355,9 @@ class Util {
                                \OC_Filesystem::normalizePath($filename)
                        );
                }
-
-
        }
 
+
        /**
         * @brief go recursively through a dir and collect all files and sub files.
         * @param string $dir relative to the users files folder