]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fallback to share link owner when no owner found 2819/head
authorVincent Petry <pvince81@owncloud.com>
Wed, 9 Nov 2016 11:36:35 +0000 (12:36 +0100)
committerLukas Reschke <lukas@statuscode.ch>
Thu, 22 Dec 2016 09:48:32 +0000 (10:48 +0100)
When creating link shares from external storage, the filesystem cannot
find an owner in some scenarios (ex: system-wide mounts). In such
cases, fall back to using the current user's trashbin which happens to
also be the user who created the link share.

Fixes an issue where this scenario made deletion impossible due to
missing user information.

Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
apps/files_trashbin/lib/Trashbin.php

index bf2fa57453f56edad6191e4967ef879e3ec5a3b1..f8067949cda31bc28845635900274fb6c9c1e64c 100644 (file)
@@ -88,6 +88,10 @@ class Trashbin {
                if (!$userManager->userExists($uid)) {
                        $uid = User::getUser();
                }
+               if (!$uid) {
+                       // no owner, usually because of share link from ext storage
+                       return [null, null];
+               }
                Filesystem::initMountPoints($uid);
                if ($uid != User::getUser()) {
                        $info = Filesystem::getFileInfo($filename);
@@ -204,6 +208,12 @@ class Trashbin {
                list(, $user) = explode('/', $root);
                list($owner, $ownerPath) = self::getUidAndFilename($file_path);
 
+               // if no owner found (ex: ext storage + share link), will use the current user's trashbin then
+               if (is_null($owner)) {
+                       $owner = $user;
+                       $ownerPath = $file_path;
+               }
+
                $ownerView = new View('/' . $owner);
                // file has been deleted in between
                if (is_null($ownerPath) || $ownerPath === '' || !$ownerView->file_exists('/files/' . $ownerPath)) {