diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Service/DocumentService.php | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/lib/Service/DocumentService.php b/lib/Service/DocumentService.php index 467dc4c80..73eb53688 100644 --- a/lib/Service/DocumentService.php +++ b/lib/Service/DocumentService.php @@ -293,6 +293,15 @@ class DocumentService { $savedEtag = $file->getEtag(); $lastMTime = $document->getLastSavedVersionTime(); + if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { + if (!$this->cache->get('document-save-lock-' . $documentId)) { + throw new DocumentSaveConflictException('File changed in the meantime from outside'); + } else { + // Only return here if the document is locked, otherwise we can continue to save + return $document; + } + } + if ($autoaveDocument === null) { return $document; } @@ -305,13 +314,6 @@ class DocumentService { if ($file->getMTime() === $lastMTime && $lastMTime > time() - self::AUTOSAVE_MINIMUM_DELAY && $manualSave === false) { return $document; } - if ($lastMTime > 0 && $savedEtag !== $document->getLastSavedVersionEtag() && $force === false) { - if (!$this->cache->get('document-save-lock-' . $documentId)) { - throw new DocumentSaveConflictException('File changed in the meantime from outside'); - } else { - return $document; - } - } $this->cache->set('document-save-lock-' . $documentId, true, 10); try { $file->putContent($autoaveDocument); |