From a4e0d7f1da8975f973f6a9d3286f0897edd48910 Mon Sep 17 00:00:00 2001 From: "florian.azizian" <florian.azizian@maarch.org> Date: Fri, 11 Oct 2019 11:15:35 +0100 Subject: [PATCH] FEAT #11875 TIME 4:15 rest for new scanToMaarch (old mcc) --- rest/index.php | 1 + .../AcknowledgementReceiptTrait.php | 3 +- .../controllers/ConvertPdfController.php | 50 +++++++++++++++---- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/rest/index.php b/rest/index.php index 2a0dd9e7d14..2ea0763fb7a 100755 --- a/rest/index.php +++ b/rest/index.php @@ -130,6 +130,7 @@ $app->put('/contactsFilling', \Contact\controllers\ContactController::class . ': //Convert $app->post('/convertedFile', \Convert\controllers\ConvertPdfController::class . ':convertedFile'); +$app->get('/convertedFile/{filename}', \Convert\controllers\ConvertPdfController::class . ':getConvertedFileByFilename'); //CustomFields $app->get('/customFields', \CustomField\controllers\CustomFieldController::class . ':get'); diff --git a/src/app/action/controllers/AcknowledgementReceiptTrait.php b/src/app/action/controllers/AcknowledgementReceiptTrait.php index 883879f3040..0cf78136681 100644 --- a/src/app/action/controllers/AcknowledgementReceiptTrait.php +++ b/src/app/action/controllers/AcknowledgementReceiptTrait.php @@ -114,7 +114,8 @@ trait AcknowledgementReceiptTrait 'path' => $pathToDocument, 'data' => ['resId' => $aArgs['resId'], 'contactAddressId' => $contactToProcess, 'userId' => $currentUser['id']] ]); - $mergedDocument['encodedDocument'] = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $mergedDocument['encodedDocument']]); + $encodedDocument = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $mergedDocument['encodedDocument']]); + $mergedDocument['encodedDocument'] = $encodedDocument["encodedResource"]; $format = 'pdf'; if (!empty($mergedDocument['encodedDocument']['errors'])) { diff --git a/src/app/convert/controllers/ConvertPdfController.php b/src/app/convert/controllers/ConvertPdfController.php index 070ada7f624..f356891fb62 100755 --- a/src/app/convert/controllers/ConvertPdfController.php +++ b/src/app/convert/controllers/ConvertPdfController.php @@ -144,10 +144,10 @@ class ConvertPdfController public static function convertFromEncodedResource(array $aArgs) { ValidatorModel::notEmpty($aArgs, ['encodedResource']); - ValidatorModel::stringType($aArgs, ['encodedResource']); + ValidatorModel::stringType($aArgs, ['encodedResource', 'context']); $tmpPath = CoreConfigModel::getTmpPath(); - $tmpFilename = 'converting' . rand(); + $tmpFilename = 'converting' . rand() . '_' . rand(); file_put_contents($tmpPath . $tmpFilename, base64_decode($aArgs['encodedResource'])); @@ -159,11 +159,19 @@ class ConvertPdfController return ['errors' => '[ConvertPdf] Conversion failed ! '. implode(" ", $output)]; } - $resource = file_get_contents("{$tmpPath}{$tmpFilename}.pdf"); unlink("{$tmpPath}{$tmpFilename}"); - unlink("{$tmpPath}{$tmpFilename}.pdf"); - return base64_encode($resource); + $resource = file_get_contents("{$tmpPath}{$tmpFilename}.pdf"); + + $aReturn = []; + $aReturn["encodedResource"] = base64_encode($resource); + + if ($aArgs['context'] == 'scan') { + $aReturn["tmpFilename"] = $tmpFilename.'.pdf'; + } else { + unlink("{$tmpPath}{$tmpFilename}.pdf"); + } + return $aReturn; } public static function getConvertedPdfById(array $aArgs) @@ -224,10 +232,10 @@ class ConvertPdfController $body = $request->getParsedBody(); if (!Validator::notEmpty()->validate($body['name'])) { - return $response->withStatus(400)->withJson(['errors' => 'Body name is not an integer']); + return $response->withStatus(400)->withJson(['errors' => 'Body name is empty']); } if (!Validator::notEmpty()->validate($body['base64'])) { - return $response->withStatus(400)->withJson(['errors' => 'Body base64 is not an integer']); + return $response->withStatus(400)->withJson(['errors' => 'Body base64 is empty']); } $file = base64_decode($body['base64']); @@ -237,7 +245,15 @@ class ConvertPdfController $size = strlen($file); if (strtolower($ext) == 'pdf' && strtolower($mimeType) == 'application/pdf') { - return $response->withJson(['encodedResource' => $body['base64']]); + $return['encodedResource'] = $body['base64']; + if ($body['context'] == 'scan') { + $tmpPath = CoreConfigModel::getTmpPath(); + $tmpFilename = 'scan_converting' . rand() . '.pdf'; + + file_put_contents($tmpPath . $tmpFilename, $file); + $return['tmpFilename'] = $tmpFilename; + } + return $response->withJson($return); } else { $fileAccepted = StoreController::isFileAllowed(['extension' => $ext, 'type' => $mimeType]); $maxFilesizeMo = ini_get('upload_max_filesize'); @@ -251,12 +267,26 @@ class ConvertPdfController return $response->withStatus(400)->withJson(['errors' => 'File accepted but can not be converted in pdf']); } - $convertion = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $body['base64']]); + $convertion = ConvertPdfController::convertFromEncodedResource(['encodedResource' => $body['base64'], 'context' => $body['context']]); if (empty($convertion['errors'])) { - return $response->withJson(['encodedResource' => $convertion]); + return $response->withJson($convertion); } else { return $response->withStatus(400)->withJson($convertion); } } } + + public function getConvertedFileByFilename(Request $request, Response $response, array $aArgs) + { + $tmpPath = CoreConfigModel::getTmpPath(); + + if (!file_exists("{$tmpPath}{$aArgs['filename']}")) { + return $response->withStatus(400)->withJson(['errors' => 'File does not exists']); + } + + $resource = file_get_contents("{$tmpPath}{$aArgs['filename']}"); + unlink("{$tmpPath}{$aArgs['filename']}"); + + return $response->withJson(['encodedResource' => base64_encode($resource)]); + } } -- GitLab