PMA\libraries\controllers\table\TableSearchController::_getGeomWhereClause PHP Method

_getGeomWhereClause() private method

Return the where clause for a geometrical column.
private _getGeomWhereClause ( mixed $criteriaValues, string $names, string $func_type, string $types, boolean $geom_func = null ) : string
$criteriaValues mixed Search criteria input
$names string Name of the column on which search is submitted
$func_type string Search function/operator
$types string Type of the field
$geom_func boolean 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 (strlen($criteriaValues) > 0) {
            $where = $geom_function_applied . " " . $func_type . " '" . $criteriaValues . "'";
        }
        return $where;
    }