Server IP : 85.214.239.14 / Your IP : 18.118.151.112 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /var/www/wordpress/phpMyAdmin/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Editor for Geometry data types. * * @package PhpMyAdmin */ declare(strict_types=1); use PhpMyAdmin\Core; use PhpMyAdmin\Gis\GisFactory; use PhpMyAdmin\Gis\GisVisualization; use PhpMyAdmin\Response; use PhpMyAdmin\Template; use PhpMyAdmin\Util; if (! defined('ROOT_PATH')) { define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR); } require_once ROOT_PATH . 'libraries/common.inc.php'; /** @var Template $template */ $template = $containerBuilder->get('template'); if (! isset($_POST['field'])) { Util::checkParameters(['field']); } // Get data if any posted $gis_data = []; if (Core::isValid($_POST['gis_data'], 'array')) { $gis_data = $_POST['gis_data']; } $gis_types = [ 'POINT', 'MULTIPOINT', 'LINESTRING', 'MULTILINESTRING', 'POLYGON', 'MULTIPOLYGON', 'GEOMETRYCOLLECTION', ]; // Extract type from the initial call and make sure that it's a valid one. // Extract from field's values if available, if not use the column type passed. if (! isset($gis_data['gis_type'])) { if (isset($_POST['type']) && $_POST['type'] != '') { $gis_data['gis_type'] = mb_strtoupper($_POST['type']); } if (isset($_POST['value']) && trim($_POST['value']) != '') { $start = (substr($_POST['value'], 0, 1) == "'") ? 1 : 0; $gis_data['gis_type'] = mb_substr( $_POST['value'], $start, mb_strpos($_POST['value'], "(") - $start ); } if (! isset($gis_data['gis_type']) || (! in_array($gis_data['gis_type'], $gis_types)) ) { $gis_data['gis_type'] = $gis_types[0]; } } $geom_type = $gis_data['gis_type']; // Generate parameters from value passed. $gis_obj = GisFactory::factory($geom_type); if (isset($_POST['value'])) { $gis_data = array_merge( $gis_data, $gis_obj->generateParams($_POST['value']) ); } // Generate Well Known Text $srid = (isset($gis_data['srid']) && $gis_data['srid'] != '') ? $gis_data['srid'] : 0; $wkt = $gis_obj->generateWkt($gis_data, 0); $wkt_with_zero = $gis_obj->generateWkt($gis_data, 0, '0'); $result = "'" . $wkt . "'," . $srid; // Generate SVG based visualization $visualizationSettings = [ 'width' => 450, 'height' => 300, 'spatialColumn' => 'wkt', 'mysqlVersion' => $GLOBALS['dbi']->getVersion(), ]; $data = [ [ 'wkt' => $wkt_with_zero, 'srid' => $srid, ], ]; $visualization = GisVisualization::getByData($data, $visualizationSettings) ->toImage('svg'); $open_layers = GisVisualization::getByData($data, $visualizationSettings) ->asOl(); // If the call is to update the WKT and visualization make an AJAX response if (isset($_POST['generate']) && $_POST['generate'] == true) { $extra_data = [ 'result' => $result, 'visualization' => $visualization, 'openLayers' => $open_layers, ]; $response = Response::getInstance(); $response->addJSON($extra_data); exit; } $geom_count = 1; if ($geom_type == 'GEOMETRYCOLLECTION') { $geom_count = isset($gis_data[$geom_type]['geom_count']) ? intval($gis_data[$geom_type]['geom_count']) : 1; if (isset($gis_data[$geom_type]['add_geom'])) { $geom_count++; } } $templateOutput = $template->render('gis_data_editor_form', [ 'width' => $visualizationSettings['width'], 'height' => $visualizationSettings['height'], 'pma_theme_image' => $GLOBALS['pmaThemeImage'], 'field' => $_POST['field'], 'input_name' => $_POST['input_name'], 'srid' => $srid, 'visualization' => $visualization, 'open_layers' => $open_layers, 'gis_types' => $gis_types, 'geom_type' => $geom_type, 'geom_count' => $geom_count, 'gis_data' => $gis_data, 'result' => $result, ]); Response::getInstance()->addJSON('gis_editor', $templateOutput);