From d163ce63c37776a297bf1ad711e1f3f5d38a0cac Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Mon, 24 Feb 2020 18:22:12 +0100 Subject: [PATCH] FEAT #12091 TIME 1:00 download signed document as original content --- .../resource/controllers/ResController.php | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php index a8bde115868..0887da81a1d 100755 --- a/src/app/resource/controllers/ResController.php +++ b/src/app/resource/controllers/ResController.php @@ -546,13 +546,13 @@ class ResController extends ResourceControlController return $response->withJson(['encodedDocument' => base64_encode($fileContent)]); } - public function getOriginalFileContent(Request $request, Response $response, array $aArgs) + public function getOriginalFileContent(Request $request, Response $response, array $args) { - if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => [$aArgs['resId']], 'userId' => $GLOBALS['id']])) { + if (!Validator::intVal()->validate($args['resId']) || !ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) { return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); } - $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename', 'category_id'], 'resId' => $aArgs['resId']]); + $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename', 'category_id', 'version'], 'resId' => $args['resId']]); if (empty($document)) { return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']); } @@ -561,6 +561,15 @@ class ResController extends ResourceControlController return $response->withStatus(400)->withJson(['errors' => 'Document has no file']); } + $convertedDocument = AdrModel::getDocuments([ + 'select' => ['docserver_id', 'path', 'filename', 'fingerprint'], + 'where' => ['res_id = ?', 'type in (?)', 'version = ?'], + 'data' => [$args['resId'], ['SIGN'], $document['version']], + 'orderBy' => ["type='SIGN' DESC"], + 'limit' => 1 + ]); + $document = $convertedDocument[0] ?? $document; + $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]); if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) { return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']); @@ -591,9 +600,9 @@ class ResController extends ResourceControlController HistoryController::add([ 'tableName' => 'res_letterbox', - 'recordId' => $aArgs['resId'], + 'recordId' => $args['resId'], 'eventType' => 'VIEW', - 'info' => _DOC_DISPLAYING . " : {$aArgs['resId']}", + 'info' => _DOC_DISPLAYING . " : {$args['resId']}", 'moduleId' => 'res', 'eventId' => 'resview', ]); -- GitLab