getGISFunctions() public static method

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.
return array names and details of the functions that can be applied on geometry data types.
Ejemplo n.º 1
0
 /**
  * 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;
 }