Translated using Weblate (Slovenian)
[phpmyadmin.git] / tbl_gis_visualization.php
blobc6ddfb319f88cdaffe5b20efc9949d612d11f9d8
1 <?php
2 /* vim: set expandtab sw=4 ts=4 sts=4: */
3 /**
4 * handles creation of the GIS visualizations.
6 * @package PhpMyAdmin
7 */
9 require_once 'libraries/common.inc.php';
10 require_once './libraries/gis/GIS_Visualization.class.php';
11 require_once './libraries/gis/GIS_Factory.class.php';
13 // Runs common work
14 require_once 'libraries/db_common.inc.php';
15 $url_params['goto'] = PMA_Util::getScriptNameForOption(
16 $GLOBALS['cfg']['DefaultTabDatabase'], 'database'
18 $url_params['back'] = 'sql.php';
20 $response = PMA_Response::getInstance();
21 // Throw error if no sql query is set
22 if (! isset($sql_query) || $sql_query == '') {
23 $response->isSuccess(false);
24 $response->addHTML(
25 PMA_Message::error(__('No SQL query was set to fetch data.'))
27 exit;
30 // Execute the query and return the result
31 $result = $GLOBALS['dbi']->tryQuery($sql_query);
32 // Get the meta data of results
33 $meta = $GLOBALS['dbi']->getFieldsMeta($result);
35 // Find the candidate fields for label column and spatial column
36 $labelCandidates = array(); $spatialCandidates = array();
37 foreach ($meta as $column_meta) {
38 if ($column_meta->type == 'geometry') {
39 $spatialCandidates[] = $column_meta->name;
40 } else {
41 $labelCandidates[] = $column_meta->name;
45 // Get settings if any posted
46 $visualizationSettings = array();
47 if (PMA_isValid($_REQUEST['visualizationSettings'], 'array')) {
48 $visualizationSettings = $_REQUEST['visualizationSettings'];
51 if (! isset($visualizationSettings['labelColumn']) && isset($labelCandidates[0])) {
52 $visualizationSettings['labelColumn'] = '';
55 // If spatial column is not set, use first geometric column as spatial column
56 if (! isset($visualizationSettings['spatialColumn'])) {
57 $visualizationSettings['spatialColumn'] = $spatialCandidates[0];
60 // Convert geometric columns from bytes to text.
61 $pos = isset($_REQUEST['pos']) ? $_REQUEST['pos'] : $_SESSION['tmpval']['pos'];
62 if (isset($_REQUEST['session_max_rows'])) {
63 $rows = $_REQUEST['session_max_rows'];
64 } else {
65 if ($_SESSION['tmpval']['max_rows'] != 'all') {
66 $rows = $_SESSION['tmpval']['max_rows'];
67 } else {
68 $rows = $GLOBALS['cfg']['MaxRows'];
72 if (isset($_REQUEST['saveToFile'])) {
73 $response->disable();
74 $file_name = $visualizationSettings['spatialColumn'];
75 $save_format = $_REQUEST['fileFormat'];
76 $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos);
77 $visualization->toFile($file_name, $save_format);
78 exit();
81 $header = $response->getHeader();
82 $scripts = $header->getScripts();
83 $scripts->addFile('openlayers/OpenLayers.js');
84 $scripts->addFile('jquery/jquery.svg.js');
85 $scripts->addFile('tbl_gis_visualization.js');
86 $scripts->addFile('OpenStreetMap.js');
88 // If all the rows contain SRID, use OpenStreetMaps on the initial loading.
89 if (! isset($_REQUEST['displayVisualization'])) {
90 $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos);
91 if ($visualization->hasSrid())
92 unset($visualizationSettings['choice']);
93 $visualizationSettings['choice'] = 'useBaseLayer';
96 $svgSupport = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER <= 8)
97 ? false : true;
98 $format = $svgSupport ? 'svg' : 'png';
100 $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos);
101 if ($visualizationSettings != null) {
102 foreach ($visualization->getSettings() as $setting => $val) {
103 if (! isset($visualizationSettings[$setting])) {
104 $visualizationSettings[$setting] = $val;
109 $result = $visualization->toImage($format);
112 * Displays the page
114 $url_params['sql_query'] = $sql_query;
115 $downloadUrl = 'tbl_gis_visualization.php' . PMA_URL_getCommon($url_params)
116 . '&saveToFile=true';
117 $html = PMA\Template::get('gis_visualization/gis_visualization')->render(
118 array(
119 'url_params' => $url_params,
120 'downloadUrl' => $downloadUrl,
121 'labelCandidates' => $labelCandidates,
122 'spatialCandidates' => $spatialCandidates,
123 'visualizationSettings' => $visualizationSettings,
124 'sql_query' => $sql_query,
125 'visualization' => $result,
126 'svgSupport' => $svgSupport,
127 'drawOl' => $visualization->asOl()
131 $response->addHTML($html);