From 52b5f265ec0f8eec9b48ad9eb3d6baae55021b74 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 4 May 2021 16:31:22 +0200 Subject: [PATCH] wait #4406 @1 --- app/Models/FeedbackProcess.php | 63 +++++++++++++++++++++++++++------- resources/js/app.js | 4 +++ 2 files changed, 54 insertions(+), 13 deletions(-) diff --git a/app/Models/FeedbackProcess.php b/app/Models/FeedbackProcess.php index 09731f7..e657280 100644 --- a/app/Models/FeedbackProcess.php +++ b/app/Models/FeedbackProcess.php @@ -152,11 +152,12 @@ class FeedbackProcess public function process() { - PHP::neverStop(false); + //PHP::neverStop(false); // Open feedbacks $feedbackSheets = []; foreach ($this->getFeedbacks() as $feedback) { $reader = new Xlsx(); + $reader->setReadDataOnly(true); $xlsx = $reader->load($feedback); foreach ($xlsx->getAllSheets() as $sheet) { if ($sheet->getSheetState() !== Worksheet::SHEETSTATE_VISIBLE) { @@ -171,7 +172,12 @@ class FeedbackProcess } $reader = new Xlsx(); - $template = $reader->load($this->getTemplate()); + try { + $template = $reader->load($this->getTemplate()); + } catch (\Exception $e) { + $reader->setReadDataOnly(true); + $template = $reader->load($this->getTemplate()); + } foreach ($template->getAllSheets() as $sheet) { if ($sheet->getSheetState() !== Worksheet::SHEETSTATE_VISIBLE) { continue; @@ -196,6 +202,11 @@ class FeedbackProcess return mb_strtolower(trim($sheet->getCellByColumnAndRow(1, 1)->getValue())); } + /** + * @param $sheet Worksheet + * @return int + * @throws \Exception + */ protected function _getHeadersRow($sheet) { $highestRow = $sheet->getHighestRow(); @@ -205,6 +216,9 @@ class FeedbackProcess break; } } + if (!isset($headersRow)) { + return null; + } return $headersRow; } @@ -235,6 +249,9 @@ class FeedbackProcess // Find header row $highestRow = $templateSheet->getHighestRow(); $headersRow = $this->_getHeadersRow($templateSheet); + if (null === $headersRow) { + return; + } $templateMaxCol = $this->_getMaxCol($templateSheet); // Add ranking column @@ -266,6 +283,10 @@ class FeedbackProcess $maxrow = $feedback->getHighestRow(); for ($j = $hr + 1; $j <= $maxrow; $j++) { $ean = trim($feedback->getCellByColumnAndRow($eanCol, $j)->getValue()); + if (null === $ean || $ean === '') { + break; + } + if (!isset($merged[$ean])) { $merged[$ean] = []; } @@ -275,6 +296,9 @@ class FeedbackProcess $v = ''; } $v = trim($v); + if ($v === '' && isset($merged[$ean][$i - $startCol])) { + continue; + } $merged[$ean][$i - $startCol] = $v; } } @@ -429,19 +453,32 @@ class FeedbackProcess foreach ($templateSheet->getDrawingCollection() as $drawing) { if ($drawing instanceof Drawing) { $dim = getimagesize($drawing->getPath()); - $drawing->setResizeProportional(false); - $drawing->setWidth($dim[0]); - $drawing->setHeight($dim[1]); - $drawing->setResizeProportional(true); - $drawing->setWidth(300); + if (false === $dim) { + $e = explode('.', $drawing->getPath()); + $ext = array_pop($e); + $hash = md5($drawing->getPath()); + $tmp = '/tmp/' . $hash . '.' . $ext; + $converted = '/tmp/' . $hash . '.png'; + copy($drawing->getPath(), $tmp); + $cmd = "inkscape -e $converted $tmp"; + `$cmd`; + $drawing->setPath($converted); + // $dim = getimagesize($converted); + } +// $drawing->setResizeProportional(false); +// $drawing->setWidth($dim[0]); +// $drawing->setHeight($dim[1]); +// $drawing->setResizeProportional(true); +// $drawing->setWidth(300); + } else { - $drawing->setResizeProportional(false); - $drawing->setWidth(300); - $drawing->setHeight(80); - $drawing->setResizeProportional(true); +// $drawing->setResizeProportional(false); +// $drawing->setWidth(300); +// $drawing->setHeight(80); +// $drawing->setResizeProportional(true); } - $drawing->setOffsetX(0); - $drawing->setOffsetY(0); +// $drawing->setOffsetX(0); +// $drawing->setOffsetY(0); } diff --git a/resources/js/app.js b/resources/js/app.js index 72e91b1..1e5f653 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -89,6 +89,10 @@ $(function () { $(".submit").attr('value', 'Envoyer'); $("#wait").hide(); window.location = '/download?session=' + session; + }).fail(function () { + alert('Une erreur s\'est produite lors du traitement'); + $(".submit").attr('value', 'Renvoyer'); + $("#wait").hide(); }); return false; }); -- 2.39.5