From 4697f32892c64b7e86ea0eb2210eb1e90e1d3d69 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Tue, 17 Sep 2024 18:51:40 +0100 Subject: [PATCH] Use $request Signed-off-by: Kamil Tekiela --- .../Table/GisVisualizationController.php | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/src/Controllers/Table/GisVisualizationController.php b/src/Controllers/Table/GisVisualizationController.php index f77cc0a42d..5f01ebbcda 100644 --- a/src/Controllers/Table/GisVisualizationController.php +++ b/src/Controllers/Table/GisVisualizationController.php @@ -25,6 +25,7 @@ use PhpMyAdmin\Url; use PhpMyAdmin\Util; use function __; +use function array_search; use function in_array; use function is_array; use function is_string; @@ -107,7 +108,11 @@ final class GisVisualizationController implements InvocableController } // Get settings if any posted - $visualizationSettings = $this->getVisualizationSettings($spatialCandidates, $labelCandidates); + $visualizationSettings = $this->getVisualizationSettings( + $spatialCandidates, + $labelCandidates, + $request->getParam('visualizationSettings'), + ); $rows = $this->getRows(); $pos = $this->getPos(); @@ -203,15 +208,10 @@ final class GisVisualizationController implements InvocableController private function getVisualizationSettings( array $spatialCandidates, array $labelCandidates, + mixed $settingsIn, ): GisVisualizationSettings { - $settingsIn = []; - // Download as PNG/SVG/PDF use _GET and the normal form uses _POST - if (is_array($_POST['visualizationSettings'] ?? null)) { - /** @var mixed[] $settingsIn */ - $settingsIn = $_POST['visualizationSettings']; - } elseif (is_array($_GET['visualizationSettings'] ?? null)) { - /** @var mixed[] $settingsIn */ - $settingsIn = $_GET['visualizationSettings']; + if (! is_array($settingsIn)) { + return new GisVisualizationSettings(600, 450, $spatialCandidates[0]); } $labelColumn = null; @@ -223,14 +223,11 @@ final class GisVisualizationController implements InvocableController } // If spatial column is not set, use first geometric column as spatial column - if ( - isset($settingsIn['spatialColumn']) && - in_array($settingsIn['spatialColumn'], $spatialCandidates, true) - ) { - $spatialColumn = $settingsIn['spatialColumn']; - } else { - $spatialColumn = $spatialCandidates[0]; - } + $spatialColumn = $spatialCandidates[array_search( + $settingsIn['spatialColumn'] ?? null, + $spatialCandidates, + true, + )]; return new GisVisualizationSettings(600, 450, $spatialColumn, $labelColumn); }