From 4913ce078e43a4cc98874c9f45b3930934b4dcb3 Mon Sep 17 00:00:00 2001 From: conradverm Date: Wed, 3 Oct 2007 20:03:15 +0000 Subject: [PATCH] KTS-673 "The search algorithm needs some work" Updated. Internationalisation and optimisation of NOT into inverse of desired operator --- search2/search/expr.inc.php | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/search2/search/expr.inc.php b/search2/search/expr.inc.php index 5df228d..6fd6a0a 100755 --- a/search2/search/expr.inc.php +++ b/search2/search/expr.inc.php @@ -138,7 +138,7 @@ class Expr */ public function __toString() { - throw new Exception('Not yet implemented in ' . get_class($this)); + throw new Exception(sprintf(_kt('Not yet implemented in %s'), get_class($this))); } /** @@ -556,35 +556,48 @@ class ValueExpr extends Expr { case ExprOp::CONTAINS: $sql = "$fieldname LIKE '%$val%'"; + if ($not) $sql = "not ($sql)"; break; case ExprOp::STARTS_WITH: $sql = "$fieldname LIKE '$val%'"; + if ($not) $sql = "not ($sql)"; break; case ExprOp::ENDS_WITH: $sql = "$fieldname LIKE '%$val'"; + if ($not) $sql = "not ($sql)"; break; case ExprOp::IS: - $sql = "$fieldname = $quote$val$quote"; + if ($not) + $sql = "$fieldname != $quote$val$quote"; + else + $sql = "$fieldname = $quote$val$quote"; break; case ExprOp::GREATER_THAN : - $sql = "$fieldname > $quote$val$quote"; + if ($not) + $sql = "$fieldname <= $quote$val$quote"; + else + $sql = "$fieldname > $quote$val$quote"; break; case ExprOp::GREATER_THAN_EQUAL : - $sql = "$fieldname >= $quote$val$quote"; + if ($not) + $sql = "$fieldname < $quote$val$quote"; + else + $sql = "$fieldname >= $quote$val$quote"; break; case ExprOp::LESS_THAN : - $sql = "$fieldname < $quote$val$quote"; + if ($not) + $sql = "$fieldname >= $quote$val$quote"; + else + $sql = "$fieldname < $quote$val$quote"; break; case ExprOp::LESS_THAN_EQUAL : - $sql = "$fieldname <= $quote$val$quote"; + if ($not) + $sql = "$fieldname > $quote$val$quote"; + else + $sql = "$fieldname <= $quote$val$quote"; break; default: - throw new Exception('Unknown op: ' . $op); - } - - if ($not) - { - $sql = "not ($sql)"; + throw new Exception(sprintf(_kt('Unknown op: %s'), $op)); } return $sql; @@ -741,7 +754,7 @@ class BetweenValueExpr extends ValueExpr { if ($op != ExprOp::BETWEEN) { - throw new Exception('Unexpected operator: ' . $op); + throw new Exception(sprintf(_kt('Unexpected operator: %s'), $op)); } $quote = ''; -- libgit2 0.21.4