diff options
-rw-r--r-- | apps/files_trashbin/lib/Storage.php | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/apps/files_trashbin/lib/Storage.php b/apps/files_trashbin/lib/Storage.php index 8dd41924aa6..b8f154ea051 100644 --- a/apps/files_trashbin/lib/Storage.php +++ b/apps/files_trashbin/lib/Storage.php @@ -44,6 +44,12 @@ class Storage extends Wrapper { */ private static $disableTrash = false; + /** + * remember which file/folder was moved out of s shared folder + * in this case we want to add a copy to the owners trash bin + * + * @var array + */ private static $moveOutOfSharedFolder = []; /** @var IUserManager */ @@ -77,19 +83,28 @@ class Storage extends Wrapper { $fileMovedOutOfSharedFolder = false; - if ($currentUser) { - $currentUserId = $currentUser->getUID(); + try { + if ($currentUser) { + $currentUserId = $currentUser->getUID(); - $view = new View($currentUserId . '/files'); - $sourceStorage = $view->getFileInfo($oldPath)->getStorage(); - $sourceOwner = $view->getOwner($oldPath); - $targetOwner = $view->getOwner($newPath); + $view = new View($currentUserId . '/files'); + $fileInfo = $view->getFileInfo($oldPath); + if ($fileInfo) { + $sourceStorage = $fileInfo->getStorage(); + $sourceOwner = $view->getOwner($oldPath); + $targetOwner = $view->getOwner($newPath); - if($sourceOwner !== $targetOwner - && $sourceStorage->instanceOfStorage('OCA\Files_Sharing\SharedStorage') - ) { - $fileMovedOutOfSharedFolder = true; + if ($sourceOwner !== $targetOwner + && $sourceStorage->instanceOfStorage('OCA\Files_Sharing\SharedStorage') + ) { + $fileMovedOutOfSharedFolder = true; + } + } } + } catch (\Exception $e) { + // do nothing, in this case we just disable the trashbin and continue + $logger = \OC::$server->getLogger(); + $logger->debug('Trashbin storage could not check if a file was moved out of a shared folder: ' . $e->getMessage()); } if($fileMovedOutOfSharedFolder) { |