Server IP : 127.0.0.2 / Your IP : 3.148.217.66 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/share/phpmyadmin/libraries/controllers/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Holds the PMA\TableIndexesController * * @package PMA */ namespace PMA\Controllers\Table; use PMA\Template; use PMA_GIS_Visualization; use PMA_Message; use PMA\Controllers\TableController; require_once 'libraries/common.inc.php'; require_once 'libraries/db_common.inc.php'; require_once 'libraries/controllers/TableController.class.php'; require_once 'libraries/gis/GIS_Visualization.class.php'; require_once 'libraries/gis/GIS_Factory.class.php'; require_once 'libraries/Message.class.php'; /** * Class TableGisVisualizationController * * @package PMA\Controllers\Table */ class TableGisVisualizationController extends TableController { /** * @var array $url_params */ protected $url_params; /** * @var string $sql_query */ protected $sql_query; /** * @var array $visualizationSettings */ protected $visualizationSettings; /** * @var PMA_GIS_Visualization $visualization */ protected $visualization; /** * Constructor * * @param string $sql_query SQL query for retrieving GIS data * @param array $url_params array of URL parameters * @param string $goto goto script * @param string $back back script * @param array $visualizationSettings visualization settings */ public function __construct( $sql_query, $url_params, $goto, $back, $visualizationSettings ) { parent::__construct(); $this->sql_query = $sql_query; $this->url_params = $url_params; $this->url_params['goto'] = $goto; $this->url_params['back'] = $back; $this->visualizationSettings = $visualizationSettings; } /** * Save to file * * @return void */ public function saveToFileAction() { $this->response->disable(); $file_name = $this->visualizationSettings['spatialColumn']; $save_format = $_REQUEST['fileFormat']; $this->visualization->toFile($file_name, $save_format); } /** * Index * * @return void */ public function indexAction() { // Throw error if no sql query is set if (! isset($this->sql_query) || $this->sql_query == '') { $this->response->isSuccess(false); $this->response->addHTML( PMA_Message::error(__('No SQL query was set to fetch data.')) ); return; } // Execute the query and return the result $result = $this->dbi->tryQuery($this->sql_query); // Get the meta data of results $meta = $this->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 if (PMA_isValid($_REQUEST['visualizationSettings'], 'array')) { $this->visualizationSettings = $_REQUEST['visualizationSettings']; } if (!isset($this->visualizationSettings['labelColumn']) && isset($labelCandidates[0]) ) { $this->visualizationSettings['labelColumn'] = ''; } // If spatial column is not set, use first geometric column as spatial column if (! isset($this->visualizationSettings['spatialColumn'])) { $this->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']; } } $this->visualization = PMA_GIS_Visualization::get( $this->sql_query, $this->visualizationSettings, $rows, $pos ); if (isset($_REQUEST['saveToFile'])) { $this->saveToFileAction(); return; } $this->response->getHeader()->getScripts()->addFiles( array( 'openlayers/OpenLayers.js', 'jquery/jquery.svg.js', 'tbl_gis_visualization.js', 'OpenStreetMap.js' ) ); // If all the rows contain SRID, use OpenStreetMaps on the initial loading. if (! isset($_REQUEST['displayVisualization'])) { if ($this->visualization->hasSrid()) { $this->visualizationSettings['choice'] = 'useBaseLayer'; } else { unset($this->visualizationSettings['choice']); } } $this->visualization->setUserSpecifiedSettings($this->visualizationSettings); if ($this->visualizationSettings != null) { foreach ($this->visualization->getSettings() as $setting => $val) { if (! isset($this->visualizationSettings[$setting])) { $this->visualizationSettings[$setting] = $val; } } } /** * Displays the page */ $this->url_params['sql_query'] = $this->sql_query; $downloadUrl = 'tbl_gis_visualization.php' . PMA_URL_getCommon( array_merge( $this->url_params, array( 'saveToFile' => true, 'session_max_rows' => $rows, 'pos' => $pos ) ) ); $svgSupport = (PMA_USR_BROWSER_AGENT == 'IE' && PMA_USR_BROWSER_VER <= 8) ? false : true; $html = Template::get('table/gis_visualization/gis_visualization')->render( array( 'url_params' => $this->url_params, 'downloadUrl' => $downloadUrl, 'labelCandidates' => $labelCandidates, 'spatialCandidates' => $spatialCandidates, 'visualizationSettings' => $this->visualizationSettings, 'sql_query' => $this->sql_query, 'visualization' => $this->visualization->toImage( $svgSupport ? 'svg' : 'png' ), 'svgSupport' => $svgSupport, 'drawOl' => $this->visualization->asOl() ) ); $this->response->addHTML($html); } }