isSuccess(false); $response->addHTML( PMA_Message::error(__('No SQL query was set to fetch data.')) ); exit; } // Execute the query and return the result $result = $GLOBALS['dbi']->tryQuery($sql_query); // Get the meta data of results $meta = $GLOBALS['dbi']->getFieldsMeta($result); // Find the candidate fields for label column and spatial column $labelCandidates = array(); $spatialCandidates = array(); foreach ($meta as $column_meta) { if ($column_meta->type == 'geometry') { $spatialCandidates[] = $column_meta->name; } else { $labelCandidates[] = $column_meta->name; } } // Get settings if any posted $visualizationSettings = array(); if (PMA_isValid($_REQUEST['visualizationSettings'], 'array')) { $visualizationSettings = $_REQUEST['visualizationSettings']; } if (! isset($visualizationSettings['labelColumn']) && isset($labelCandidates[0])) { $visualizationSettings['labelColumn'] = ''; } // If spatial column is not set, use first geometric column as spatial column if (! isset($visualizationSettings['spatialColumn'])) { $visualizationSettings['spatialColumn'] = $spatialCandidates[0]; } // Convert geometric columns from bytes to text. $pos = isset($_REQUEST['pos']) ? $_REQUEST['pos'] : $_SESSION['tmpval']['pos']; if (isset($_REQUEST['session_max_rows'])) { $rows = $_REQUEST['session_max_rows']; } else { if ($_SESSION['tmpval']['max_rows'] != 'all') { $rows = $_SESSION['tmpval']['max_rows']; } else { $rows = $GLOBALS['cfg']['MaxRows']; } } if (isset($_REQUEST['saveToFile'])) { $response->disable(); $file_name = $visualizationSettings['spatialColumn']; $save_format = $_REQUEST['fileFormat']; $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos); $visualization->toFile($file_name, $save_format); exit(); } $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('openlayers/OpenLayers.js'); $scripts->addFile('jquery/jquery.svg.js'); $scripts->addFile('tbl_gis_visualization.js'); $scripts->addFile('OpenStreetMap.js'); // If all the rows contain SRID, use OpenStreetMaps on the initial loading. if (! isset($_REQUEST['displayVisualization'])) { $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos); if ($visualization->hasSrid()) unset($visualizationSettings['choice']); $visualizationSettings['choice'] = 'useBaseLayer'; } $svgSupport = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER <= 8) ? false : true; $format = $svgSupport ? 'svg' : 'png'; $visualization = PMA_GIS_Visualization::get($sql_query, $visualizationSettings, $rows, $pos); if ($visualizationSettings != null) { foreach ($visualization->getSettings() as $setting => $val) { if (! isset($visualizationSettings[$setting])) { $visualizationSettings[$setting] = $val; } } } $result = $visualization->toImage($format); /** * Displays the page */ $url_params['sql_query'] = $sql_query; $downloadUrl = 'tbl_gis_visualization.php' . PMA_URL_getCommon($url_params) . '&saveToFile=true'; $html = PMA\Template::get('gis_visualization/gis_visualization')->render( array( 'url_params' => $url_params, 'downloadUrl' => $downloadUrl, 'labelCandidates' => $labelCandidates, 'spatialCandidates' => $spatialCandidates, 'visualizationSettings' => $visualizationSettings, 'sql_query' => $sql_query, 'visualization' => $result, 'svgSupport' => $svgSupport, 'drawOl' => $visualization->asOl() ) ); $response->addHTML($html);