diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-07-20 21:40:25 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-20 21:40:25 +0300 |
commit | 39346cc67d5ed79893a813fb3654d3c416c43409 (patch) | |
tree | e85faedd6c931c4bc4ca6468a8471b04e8670dcf /lib | |
parent | c0b42564c0283bbd75796b8e2091c87c0082deae (diff) | |
parent | 8b1404f3564c94e3782f2910adf3632b153e6a6c (diff) |
Merge pull request #219 from nextcloud/fix/184/use_editor_to_edit
Fix editing on external storage
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Controller/WopiController.php | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/lib/Controller/WopiController.php b/lib/Controller/WopiController.php index 93359f68..26bb964a 100644 --- a/lib/Controller/WopiController.php +++ b/lib/Controller/WopiController.php @@ -37,6 +37,7 @@ use OCP\IRequest; use OCP\IURLGenerator; use OCP\AppFramework\Http\StreamResponse; use OCP\IUserManager; +use OCP\IUserSession; class WopiController extends Controller { /** @var IRootFolder */ @@ -53,6 +54,8 @@ class WopiController extends Controller { private $wopiMapper; /** @var ILogger */ private $logger; + /** @var IUserSession */ + private $userSession; // Signifies LOOL that document has been changed externally in this storage const LOOL_STATUS_DOC_CHANGED = 1010; @@ -78,7 +81,8 @@ class WopiController extends Controller { TokenManager $tokenManager, IUserManager $userManager, WopiMapper $wopiMapper, - ILogger $logger) { + ILogger $logger, + IUserSession $userSession) { parent::__construct($appName, $request); $this->rootFolder = $rootFolder; $this->urlGenerator = $urlGenerator; @@ -87,6 +91,7 @@ class WopiController extends Controller { $this->userManager = $userManager; $this->wopiMapper = $wopiMapper; $this->logger = $logger; + $this->userSession = $userSession; } /** @@ -220,9 +225,15 @@ class WopiController extends Controller { return new JSONResponse([], Http::STATUS_FORBIDDEN); } + // Unless the editor is empty (public link) we modify the files as the current editor + $editor = $wopi->getEditorUid(); + if ($editor === null) { + $editor = $wopi->getOwnerUid(); + } + try { /** @var File $file */ - $userFolder = $this->rootFolder->getUserFolder($wopi->getOwnerUid()); + $userFolder = $this->rootFolder->getUserFolder($editor); $file = $userFolder->getById($fileId)[0]; if ($isPutRelative) { @@ -275,18 +286,11 @@ class WopiController extends Controller { } $content = fopen('php://input', 'rb'); - // Setup the FS which is needed to emit hooks (versioning). - \OC_Util::tearDownFS(); - if (!$isPutRelative) { - \OC_Util::setupFS($wopi->getOwnerUid()); - } else { - \OC_Util::setupFS($wopi->getEditorUid()); - } // Set the user to register the change under his name $editor = $this->userManager->get($wopi->getEditorUid()); if (!is_null($editor)) { - \OC::$server->getUserSession()->setUser($editor); + $this->userSession->setUser($editor); } $file->putContent($content); |