diff options
author | Julius Härtl <jus@bitgrid.net> | 2022-05-02 20:13:48 +0300 |
---|---|---|
committer | Raul <raul@nextcloud.com> | 2022-05-11 10:18:12 +0300 |
commit | 28b23553bfd54a2af2be76939909b45b3fc56f83 (patch) | |
tree | fc7654bcb4ae0ee7d9acf2ab6a6f78bc57518386 | |
parent | b9778135c3dbfa86b08856efbc497905c98806ed (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.php | 30 |
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); } } |