|
16 | 16 | use PhpMyAdmin\Template; |
17 | 17 | use PhpMyAdmin\Url; |
18 | 18 | use PhpMyAdmin\Util; |
| 19 | +use TCPDF; |
19 | 20 |
|
20 | 21 | use function __; |
21 | 22 | use function array_merge; |
| 23 | +use function class_exists; |
| 24 | +use function extension_loaded; |
22 | 25 | use function is_array; |
23 | 26 |
|
24 | 27 | /** |
@@ -115,6 +118,8 @@ public function __invoke(): void |
115 | 118 |
|
116 | 119 | $this->visualization = GisVisualization::get($sqlQuery, $visualizationSettings, $rows, $pos); |
117 | 120 |
|
| 121 | + $downloadOptions = $this->getDownloadOptions(); |
| 122 | + |
118 | 123 | if (isset($_GET['saveToFile'])) { |
119 | 124 | $this->saveToFile($visualizationSettings['spatialColumn'], $_GET['fileFormat']); |
120 | 125 |
|
@@ -172,11 +177,29 @@ public function __invoke(): void |
172 | 177 | 'start_and_number_of_rows_fieldset' => $startAndNumberOfRowsFieldset, |
173 | 178 | 'visualization' => $this->visualization->toImage('svg'), |
174 | 179 | 'draw_ol' => $this->visualization->asOl(), |
| 180 | + 'download_options' => $downloadOptions, |
175 | 181 | ]); |
176 | 182 |
|
177 | 183 | $this->response->addHTML($html); |
178 | 184 | } |
179 | 185 |
|
| 186 | + /** @return list<'svg'|'png'|'pdf'> */ |
| 187 | + private function getDownloadOptions(): array |
| 188 | + { |
| 189 | + $downloadOptions = []; |
| 190 | + if (class_exists(TCPDF::class)) { |
| 191 | + $downloadOptions[] = 'pdf'; |
| 192 | + } |
| 193 | + |
| 194 | + if (extension_loaded('gd')) { |
| 195 | + $downloadOptions[] = 'png'; |
| 196 | + } |
| 197 | + |
| 198 | + $downloadOptions[] = 'svg'; |
| 199 | + |
| 200 | + return $downloadOptions; |
| 201 | + } |
| 202 | + |
180 | 203 | /** |
181 | 204 | * @param string $filename File name |
182 | 205 | * @param string $format Save format |
|
0 commit comments