From cecef9fce95d8a483b2ad74f19e6faebc5a9d0b0 Mon Sep 17 00:00:00 2001 From: Damien <damien.burel@maarch.org> Date: Mon, 9 Mar 2020 10:30:42 +0100 Subject: [PATCH] FEAT #13253 TIME 0:25 Get encoded archive --- rest/index.php | 1 + .../controllers/MessageExchangeController.php | 34 +++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/rest/index.php b/rest/index.php index d5096b871e1..2e486d22803 100755 --- a/rest/index.php +++ b/rest/index.php @@ -537,6 +537,7 @@ $app->post('/scriptNotification', \Notification\controllers\NotificationSchedule //External MessageExchanges $app->get('/messageExchanges/{id}', \MessageExchange\controllers\MessageExchangeController::class . ':getById'); +$app->get('/messageExchanges/{id}/archiveContent', \MessageExchange\controllers\MessageExchangeController::class . ':getArchiveContentById'); $app->post('/saveNumericPackage', \MessageExchange\controllers\ReceiveMessageExchangeController::class . ':saveMessageExchange'); $app->post('/saveMessageExchangeReturn', \MessageExchange\controllers\ReceiveMessageExchangeController::class . ':saveMessageExchangeReturn'); $app->post('/saveMessageExchangeReview', \MessageExchange\controllers\MessageExchangeReviewController::class . ':saveMessageExchangeReview'); diff --git a/src/app/external/messageExchange/controllers/MessageExchangeController.php b/src/app/external/messageExchange/controllers/MessageExchangeController.php index 1dd2aca52e7..145c5f7102f 100644 --- a/src/app/external/messageExchange/controllers/MessageExchangeController.php +++ b/src/app/external/messageExchange/controllers/MessageExchangeController.php @@ -14,6 +14,7 @@ namespace MessageExchange\controllers; +use Docserver\models\DocserverModel; use MessageExchange\models\MessageExchangeModel; use Resource\controllers\ResController; use Respect\Validation\Validator; @@ -188,4 +189,37 @@ class MessageExchangeController return $response->withJson(['messageExchange' => $messageExchange]); } + + public static function getArchiveContentById(Request $request, Response $response, array $args) + { + if (!Validator::stringType()->validate($args['id'])) { + return $response->withStatus(400)->withJson(['errors' => 'Query param id is not a string']); + } + + $message = MessageExchangeModel::getMessageByIdentifier([ + 'select' => ['docserver_id', 'path', 'filename', 'res_id_master'], + 'messageId' => $args['id'] + ]); + if (empty($message)) { + return $response->withStatus(400)->withJson(['errors' => 'Message not found']); + } + + if (empty($message['res_id_master']) || !ResController::hasRightByResId(['resId' => [$message['res_id_master']], 'userId' => $GLOBALS['id']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $docserver = DocserverModel::getByDocserverId(['docserverId' => $message['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']); + } + + $pathToDocument = $docserver['path_template'] . str_replace('#', DIRECTORY_SEPARATOR, $message['path']) . $message['filename']; + if (!file_exists($pathToDocument)) { + return $response->withStatus(400)->withJson(['errors' => 'Document not found on docserver']); + } + + $fileContent = file_get_contents($pathToDocument); + + return $response->withJson(['encodedArchive' => base64_encode($fileContent)]); + } } -- GitLab