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

github.com/ONLYOFFICE/onlyoffice-nextcloud.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'controller/callbackcontroller.php')
-rw-r--r--controller/callbackcontroller.php15
1 files changed, 12 insertions, 3 deletions
diff --git a/controller/callbackcontroller.php b/controller/callbackcontroller.php
index 96fa7ee..63aab6d 100644
--- a/controller/callbackcontroller.php
+++ b/controller/callbackcontroller.php
@@ -372,6 +372,8 @@ class CallbackController extends Controller {
* @param string $token - request signature
* @param array $history - file history
* @param string $changesurl - link to file changes
+ * @param integer $forcesavetype - the type of force save action
+ * @param array $actions - the array of action
*
* @return array
*
@@ -380,7 +382,7 @@ class CallbackController extends Controller {
* @PublicPage
* @CORS
*/
- public function track($doc, $users, $key, $status, $url, $token, $history, $changesurl) {
+ public function track($doc, $users, $key, $status, $url, $token, $history, $changesurl, $forcesavetype, $actions) {
list ($hashData, $error) = $this->crypt->ReadHash($doc);
if ($hashData === null) {
@@ -445,9 +447,18 @@ class CallbackController extends Controller {
\OC_Util::tearDownFS();
+ $isForcesave = $status === self::TrackerStatus_ForceSave || $status === self::TrackerStatus_CorruptedForceSave;
+
// author of the latest changes
$userId = $this->parseUserId($users[0]);
+ if ($isForcesave
+ && $forcesavetype === 1
+ && !empty($actions)) {
+ // the user who clicked Save
+ $userId = $this->parseUserId($actions[0]["userid"]);
+ }
+
$user = $this->userManager->get($userId);
if (!empty($user)) {
\OC_User::setUserId($userId);
@@ -503,8 +514,6 @@ class CallbackController extends Controller {
$prevIsForcesave = KeyManager::wasForcesave($fileId);
- $isForcesave = $status === self::TrackerStatus_ForceSave || $status === self::TrackerStatus_CorruptedForceSave;
-
if ($file->getStorage()->instanceOfStorage(SharingExternalStorage::class)) {
$isLock = KeyManager::lockFederatedKey($file, $isForcesave, null);
if ($isForcesave && !$isLock) {