diff --git a/libraries/display_tbl.lib.php b/libraries/display_tbl.lib.php index 710030637f..432a463423 100644 --- a/libraries/display_tbl.lib.php +++ b/libraries/display_tbl.lib.php @@ -593,6 +593,15 @@ function PMA_displayTableHeaders(&$is_display, &$fields_meta, $fields_cnt = 0, $ PMA_display_html_checkbox('hide_transformation', __('Hide') . ' ' . __('Browser transformation'), ! empty($_SESSION['tmp_user_values']['hide_transformation']), false); echo ''; + echo '
'; + $choices = array( + 'GEOM' => __('Geometry'), + 'WKT' => __('Well Known Text'), + 'WKB' => __('Well Known Binary') + ); + PMA_display_html_radio('geometry_display', $choices, $_SESSION['tmp_user_values']['geometry_display']); + echo '
'; + echo '
'; echo ''; @@ -1386,12 +1395,70 @@ function PMA_displayTableBody(&$dt_result, &$is_display, $map, $analyzed_sql) { } // g e o m e t r y } elseif ($meta->type == 'geometry') { - $geometry_text = PMA_handle_non_printable_contents('GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function, $transform_options, $default_function, $meta); - // remove 'inline_edit' from $class as we can't edit geometry data. + // Remove 'inline_edit' from $class as we do not allow to inline-edit geometry data. $class = str_replace('inline_edit', '', $class); - $vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay($class, $condition_field, $geometry_text); - unset($geometry_text); + + // Display as [GEOMETRY - (size)] + if ('GEOM' == $_SESSION['tmp_user_values']['geometry_display']) { + $geometry_text = PMA_handle_non_printable_contents( + 'GEOMETRY', (isset($row[$i]) ? $row[$i] : ''), $transform_function, + $transform_options, $default_function, $meta + ); + $vertical_display['data'][$row_no][$i] = PMA_buildValueDisplay( + $class, $condition_field, $geometry_text + ); + + // Display in Well Known Text(WKT) format. + } elseif ('WKT' == $_SESSION['tmp_user_values']['geometry_display']) { + // Convert to WKT format + $wktsql = "SELECT ASTEXT (GeomFromWKB(x'" . PMA_substr(bin2hex($row[$i]), 8) . "'))"; + $wktresult = PMA_DBI_try_query($wktsql, null, PMA_DBI_QUERY_STORE); + $wktarr = PMA_DBI_fetch_row($wktresult, 0); + $wktval = $wktarr[0]; + @PMA_DBI_free_result($wktresult); + + if (PMA_strlen($wktval) > $GLOBALS['cfg']['LimitChars'] + && $_SESSION['tmp_user_values']['display_text'] == 'P' + ) { + $wktval = PMA_substr($wktval, 0, $GLOBALS['cfg']['LimitChars']) . '...'; + $is_field_truncated = true; + } + + $vertical_display['data'][$row_no][$i] = ' $GLOBALS['cfg']['LimitChars'] + && $_SESSION['tmp_user_values']['display_text'] == 'P' + ) { + $wkbval = PMA_substr($wkbval, 0, $GLOBALS['cfg']['LimitChars']) . '...'; + $is_field_truncated = true; + } + + $vertical_display['data'][$row_no][$i] = '