]> source.dussan.org Git - nextcloud-server.git/commitdiff
make trash bin aware of system wide mounts with respect to encryption keys
authorBjörn Schießle <schiessle@owncloud.com>
Tue, 25 Jun 2013 15:17:41 +0000 (17:17 +0200)
committerBjörn Schießle <schiessle@owncloud.com>
Fri, 5 Jul 2013 14:00:25 +0000 (16:00 +0200)
apps/files_trashbin/lib/trash.php

index 1235d9d2ee07234807720e37f757afdb08de499c..b9d900dfab42b9b945c06fb0692fb2b54d7e4e3d 100644 (file)
@@ -171,13 +171,19 @@ class Trashbin {
 
                        list($owner, $ownerPath) = self::getUidAndFilename($file_path);
 
+                       $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $user);
 
                        // disable proxy to prevent recursive calls
                        $proxyStatus = \OC_FileProxy::$enabled;
                        \OC_FileProxy::$enabled = false;
 
-                       // retain key files
-                       $keyfile = \OC\Files\Filesystem::normalizePath($owner . '/files_encryption/keyfiles/' . $ownerPath);
+                       if ($util->isSystemWideMountPoint($ownerPath)) {
+                               $baseDir = '/files_encryption/';
+                       } else {
+                               $baseDir = $owner . '/files_encryption/';
+                       }
+
+                       $keyfile = \OC\Files\Filesystem::normalizePath($baseDir . '/keyfiles/' . $ownerPath);
 
                        if ($rootView->is_dir($keyfile) || $rootView->file_exists($keyfile . '.key')) {
                                // move keyfiles
@@ -191,7 +197,7 @@ class Trashbin {
                        }
 
                        // retain share keys
-                       $sharekeys = \OC\Files\Filesystem::normalizePath($owner . '/files_encryption/share-keys/' . $ownerPath);
+                       $sharekeys = \OC\Files\Filesystem::normalizePath($baseDir . '/share-keys/' . $ownerPath);
 
                        if ($rootView->is_dir($sharekeys)) {
                                $size += self::calculateSize(new \OC\Files\View($sharekeys));
@@ -403,6 +409,14 @@ class Trashbin {
 
                        list($owner, $ownerPath) = self::getUidAndFilename($target);
 
+                       $util = new \OCA\Encryption\Util(new \OC_FilesystemView('/'), $user);
+
+                       if ($util->isSystemWideMountPoint($ownerPath)) {
+                               $baseDir = '/files_encryption/';
+                       } else {
+                               $baseDir = $owner . '/files_encryption/';
+                       }
+
                        $path_parts = pathinfo($file);
                        $source_location = $path_parts['dirname'];
 
@@ -432,18 +446,18 @@ class Trashbin {
 
                                        // handle keyfiles
                                        $size += self::calculateSize(new \OC\Files\View($keyfile));
-                                       $rootView->rename($keyfile, $owner . '/files_encryption/keyfiles/' . $ownerPath);
+                                       $rootView->rename($keyfile, $baseDir . '/keyfiles/' . $ownerPath);
 
                                        // handle share-keys
                                        if ($timestamp) {
                                                $sharekey .= '.d' . $timestamp;
                                        }
                                        $size += self::calculateSize(new \OC\Files\View($sharekey));
-                                       $rootView->rename($sharekey, $owner . '/files_encryption/share-keys/' . $ownerPath);
+                                       $rootView->rename($sharekey, $baseDir . '/share-keys/' . $ownerPath);
                                } else {
                                        // handle keyfiles
                                        $size += $rootView->filesize($keyfile);
-                                       $rootView->rename($keyfile, $owner . '/files_encryption/keyfiles/' . $ownerPath . '.key');
+                                       $rootView->rename($keyfile, $baseDir . '/keyfiles/' . $ownerPath . '.key');
 
                                        // handle share-keys
                                        $ownerShareKey = \OC\Files\Filesystem::normalizePath($user . '/files_trashbin/share-keys/' . $source_location . '/' . $filename . '.' . $user . '.shareKey');
@@ -454,7 +468,7 @@ class Trashbin {
                                        $size += $rootView->filesize($ownerShareKey);
 
                                        // move only owners key
-                                       $rootView->rename($ownerShareKey, $owner . '/files_encryption/share-keys/' . $ownerPath . '.' . $user . '.shareKey');
+                                       $rootView->rename($ownerShareKey, $baseDir . '/share-keys/' . $ownerPath . '.' . $user . '.shareKey');
 
                                        // try to re-share if file is shared
                                        $filesystemView = new \OC_FilesystemView('/');