public function get_filter_cond($filter, $table_alias) { $pass = null; $type = $filter['type']; $value = $filter[$type]; $value = \System\Database::escape($value); $value_soft = \System\Database::escape_soft($filter[$type]); if (!empty($filter['self'])) { $value = $value_soft; } if ($filter['attr'] == 'id' && $this->assoc_with_model) { $model = $this->assoc_with_model; $filter['attr'] = $model::get_id_col(); } switch ($type) { case 'in': case 'exact': if (is_array($value)) { $value = implode(',', $value); $pass = "******" . $filter['attr'] . "` IN (" . $value . ")"; } else { $pass = "******" . $filter['attr'] . "` = '" . $value . "'"; } break; case 'is_null': def($filter['is_null'], true); $pass = '******' . $filter['attr'] . '` ' . ($filter['is_null'] ? 'IS' : 'IS NOT') . ' NULL'; break; case 'iexact': $pass = "******" . $filter['attr'] . "`) = LOWER(" . $value . ")"; break; case 'contains': $pass = "******" . $filter['attr'] . "` LIKE '%" . $value_soft . "%'"; break; case 'icontains': $pass = "******" . $filter['attr'] . "`) LIKE LOWER('%" . $value_soft . "%')"; break; case 'starts_with': $pass = "******" . $filter['attr'] . "` LIKE '" . $value_soft . "%'"; break; case 'istarts_with': $pass = "******" . $filter['attr'] . "`) LIKE LOWER('" . $value_soft . "%')"; break; case 'ends_with': $pass = "******" . $filter['attr'] . "` LIKE '%" . $value_soft . "'"; break; case 'iends_with': $pass = "******" . $filter['attr'] . "`) LIKE LOWER('%" . $value_soft . "')"; break; case 'gt': case 'gte': case 'lt': case 'lte': if ($type == 'gt') { $pass = "******" . $filter['attr'] . "` > " . $value . ""; } else { if ($type == 'gte') { $pass = "******" . $filter['attr'] . "` >= " . $value . ""; } else { if ($type == 'lt') { $pass = "******" . $filter['attr'] . "` < " . $value . ""; } else { if ($type == 'lte') { $pass = "******" . $filter['attr'] . "` <= " . $value . ""; } } } } break; default: throw new \System\Error\Argument('Unknown filter', $type); } return $pass; }
public function to_sql() { $data = array($this->lat(), $this->lng()); return 'GeomFromText(\'POINT(' . \System\Database::escape($data[0]) . ' ' . \System\Database::escape($data[1]) . ')\')'; }