Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/richdocuments.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-07-20 21:40:25 +0300
committerGitHub <noreply@github.com>2018-07-20 21:40:25 +0300
commit39346cc67d5ed79893a813fb3654d3c416c43409 (patch)
treee85faedd6c931c4bc4ca6468a8471b04e8670dcf /lib
parentc0b42564c0283bbd75796b8e2091c87c0082deae (diff)
parent8b1404f3564c94e3782f2910adf3632b153e6a6c (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.php24
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);