Returns the names and details of the functions
that can be applied on geometry data types.
public static getGISFunctions ( string $geom_type = null, boolean $binary = true, boolean $display = false ) : array | ||
$geom_type | string | if provided the output is limited to the functions that are applicable to the provided geometry type. |
$binary | boolean | if set to false functions that take two geometries as arguments will not be included. |
$display | boolean | if set to true separators will be added to the output array. |
Результат | array | names and details of the functions that can be applied on geometry data types. |
/** * Return the where clause for a geometrical column. * * @param mixed $criteriaValues Search criteria input * @param string $names Name of the column on which search is submitted * @param string $func_type Search function/operator * @param string $types Type of the field * @param bool $geom_func Whether geometry functions should be applied * * @return string part of where clause. */ private function _getGeomWhereClause($criteriaValues, $names, $func_type, $types, $geom_func = null) { $geom_unary_functions = array('IsEmpty' => 1, 'IsSimple' => 1, 'IsRing' => 1, 'IsClosed' => 1); $where = ''; // Get details about the geometry functions $geom_funcs = Util::getGISFunctions($types, true, false); // If the function takes multiple parameters if ($geom_funcs[$geom_func]['params'] > 1) { // create gis data from the criteria input $gis_data = Util::createGISData($criteriaValues); $where = $geom_func . '(' . Util::backquote($names) . ', ' . $gis_data . ')'; return $where; } // New output type is the output type of the function being applied $type = $geom_funcs[$geom_func]['type']; $geom_function_applied = $geom_func . '(' . Util::backquote($names) . ')'; // If the where clause is something like 'IsEmpty(`spatial_col_name`)' if (isset($geom_unary_functions[$geom_func]) && trim($criteriaValues) == '') { $where = $geom_function_applied; } elseif (in_array($type, Util::getGISDatatypes()) && !empty($criteriaValues)) { // create gis data from the criteria input $gis_data = Util::createGISData($criteriaValues); $where = $geom_function_applied . " " . $func_type . " " . $gis_data; } elseif (mb_strlen($criteriaValues) > 0) { $where = $geom_function_applied . " " . $func_type . " '" . $criteriaValues . "'"; } return $where; }