diff options
author | Robin Appelman <icewind@owncloud.com> | 2015-11-18 17:08:18 +0100 |
---|---|---|
committer | Robin Appelman <icewind@owncloud.com> | 2015-11-18 17:08:18 +0100 |
commit | 71b86c0ed4adc0a774e852338f1cd1fb192b7569 (patch) | |
tree | 76f4157f74264960328e00c148a036101223ab7a | |
parent | 1d82d93baa127e951790003b0634af8841dceb0d (diff) | |
download | nextcloud-server-71b86c0ed4adc0a774e852338f1cd1fb192b7569.tar.gz nextcloud-server-71b86c0ed4adc0a774e852338f1cd1fb192b7569.zip |
Handle non existing users as owner in the view
-rw-r--r-- | lib/private/files/view.php | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/lib/private/files/view.php b/lib/private/files/view.php index 7dd83588ec6..cee4b182425 100644 --- a/lib/private/files/view.php +++ b/lib/private/files/view.php @@ -46,11 +46,13 @@ namespace OC\Files; use Icewind\Streams\CallbackWrapper; use OC\Files\Cache\Updater; use OC\Files\Mount\MoveableMount; +use OC\User\User; use OCP\Files\FileNameTooLongException; use OCP\Files\InvalidCharacterInPathException; use OCP\Files\InvalidPathException; use OCP\Files\NotFoundException; use OCP\Files\ReservedWordException; +use OCP\IUser; use OCP\Lock\ILockingProvider; use OCP\Lock\LockedException; @@ -687,14 +689,14 @@ class View { } else { $result = false; } - // moving a file/folder within the same mount point + // moving a file/folder within the same mount point } elseif ($storage1 == $storage2) { if ($storage1) { $result = $storage1->rename($internalPath1, $internalPath2); } else { $result = false; } - // moving a file/folder between storages (from $storage1 to $storage2) + // moving a file/folder between storages (from $storage1 to $storage2) } else { $result = $storage2->moveFromStorage($storage1, $internalPath1, $internalPath2); } @@ -1164,6 +1166,19 @@ class View { } /** + * @param string $ownerId + * @return \OC\User\User + */ + private function getUserObjectForOwner($ownerId) { + $owner = \OC::$server->getUserManager()->get($ownerId); + if ($owner instanceof IUser) { + return $owner; + } else { + return new User($ownerId, null); + } + } + + /** * get the filesystem info * * @param string $path @@ -1250,7 +1265,7 @@ class View { $data['permissions'] |= \OCP\Constants::PERMISSION_DELETE; } - $owner = \OC::$server->getUserManager()->get($storage->getOwner($internalPath)); + $owner = $this->getUserObjectForOwner($storage->getOwner($internalPath)); return new FileInfo($path, $storage, $internalPath, $data, $mount, $owner); } @@ -1317,7 +1332,7 @@ class View { if (\OCP\Util::isSharingDisabledForUser()) { $content['permissions'] = $content['permissions'] & ~\OCP\Constants::PERMISSION_SHARE; } - $owner = \OC::$server->getUserManager()->get($storage->getOwner($content['path'])); + $owner = $this->getUserObjectForOwner($storage->getOwner($content['path'])); $files[] = new FileInfo($path . '/' . $content['name'], $storage, $content['path'], $content, $mount, $owner); } @@ -1387,7 +1402,7 @@ class View { $rootEntry['permissions'] = $rootEntry['permissions'] & ~\OCP\Constants::PERMISSION_SHARE; } - $owner = \OC::$server->getUserManager()->get($subStorage->getOwner('')); + $owner = $this->getUserObjectForOwner($subStorage->getOwner('')); $files[] = new FileInfo($path . '/' . $rootEntry['name'], $subStorage, '', $rootEntry, $mount, $owner); } } |