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
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2022-05-02 20:13:48 +0300
committerRaul <raul@nextcloud.com>2022-05-11 10:18:12 +0300
commit28b23553bfd54a2af2be76939909b45b3fc56f83 (patch)
treefc7654bcb4ae0ee7d9acf2ab6a6f78bc57518386
parentb9778135c3dbfa86b08856efbc497905c98806ed (diff)
Merge pull request #2172 from nextcloud/enh/file_versions/fix_behaviourbackport4/file_revisions_fix
File history fix behaviour in group folders Author: Raul Ferreira Fuentes <raul@nextcloud.com> Signed-off-by: Raul <raul@nextcloud.com>
-rw-r--r--lib/Controller/WopiController.php30
1 files changed, 15 insertions, 15 deletions
diff --git a/lib/Controller/WopiController.php b/lib/Controller/WopiController.php
index c095ea42..979f5eea 100644
--- a/lib/Controller/WopiController.php
+++ b/lib/Controller/WopiController.php
@@ -21,7 +21,7 @@
namespace OCA\Richdocuments\Controller;
-use OC\Files\View;
+use OCA\Files_Versions\Versions\IVersionManager;
use OCA\Richdocuments\AppConfig;
use OCA\Richdocuments\Db\Wopi;
use OCA\Richdocuments\Db\WopiMapper;
@@ -54,6 +54,8 @@ use OCP\IUserManager;
use OCP\Lock\LockedException;
use OCP\Share\Exceptions\ShareNotFound;
use OCP\Share\IManager as IShareManager;
+use Psr\Container\ContainerExceptionInterface;
+use Psr\Container\NotFoundExceptionInterface;
class WopiController extends Controller {
/** @var IRootFolder */
@@ -104,7 +106,9 @@ class WopiController extends Controller {
* @param TemplateManager $templateManager
* @param IShareManager $shareManager
* @param UserScopeService $userScopeService
+ * @param FederationService $federationService
* @param IEncryptionManager $encryptionManager
+ * @param IGroupManager $groupManager
*/
public function __construct(
$appName,
@@ -156,6 +160,7 @@ class WopiController extends Controller {
*/
public function checkFileInfo($fileId, $access_token) {
try {
+
list($fileId, , $version) = Helper::parseFileId($fileId);
$wopi = $this->wopiMapper->getWopiForToken($access_token);
@@ -387,20 +392,12 @@ class WopiController extends Controller {
$file = $userFolder->getById($fileId)[0];
\OC_User::setIncognitoMode(true);
if ($version !== '0') {
- $view = new View('/' . $wopi->getOwnerUid() . '/files');
- $relPath = $view->getRelativePath($file->getPath());
- $versionPath = '/files_versions/' . $relPath . '.v' . $version;
- $view = new View('/' . $wopi->getOwnerUid());
- if ($view->file_exists($versionPath)){
- $info = $view->getFileInfo($versionPath);
- if ($info->getSize() === 0) {
- $response = new Http\Response();
- } else {
- $response = new StreamResponse($view->fopen($versionPath, 'rb'));
- }
- }
- else {
- return new JSONResponse([], Http::STATUS_NOT_FOUND);
+ $versionManager = \OC::$server->get(IVersionManager::class);
+ $info = $versionManager->getVersionFile($userFolder->getOwner(), $file, $version);
+ if ($info->getSize() === 0) {
+ $response = new Http\Response();
+ } else {
+ $response = new StreamResponse($info->fopen('rb'));
}
}
else {
@@ -416,6 +413,9 @@ class WopiController extends Controller {
} catch (\Exception $e) {
$this->logger->logException($e, ['level' => ILogger::ERROR, 'app' => 'richdocuments', 'message' => 'getFile failed']);
return new JSONResponse([], Http::STATUS_FORBIDDEN);
+ } catch (NotFoundExceptionInterface|ContainerExceptionInterface $e) {
+ $this->logger->logException($e, ['level' => ILogger::ERROR, 'app' => 'richdocuments', 'message' => 'Version manager could not be found when trying to restore file. Versioning app disabled?']);
+ return new JSONResponse([], Http::STATUS_BAD_REQUEST);
}
}