Commit 4913ce078e43a4cc98874c9f45b3930934b4dcb3

Authored by conradverm
1 parent b6b35b46

KTS-673

"The search algorithm needs some work"
Updated. Internationalisation and optimisation of NOT into inverse of desired operator

Committed By: Conrad Vermeulen
Reviewed By: Kevin Fourie

git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@7282 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing 1 changed file with 26 additions and 13 deletions
search2/search/expr.inc.php
... ... @@ -138,7 +138,7 @@ class Expr
138 138 */
139 139 public function __toString()
140 140 {
141   - throw new Exception('Not yet implemented in ' . get_class($this));
  141 + throw new Exception(sprintf(_kt('Not yet implemented in %s'), get_class($this)));
142 142 }
143 143  
144 144 /**
... ... @@ -556,35 +556,48 @@ class ValueExpr extends Expr
556 556 {
557 557 case ExprOp::CONTAINS:
558 558 $sql = "$fieldname LIKE '%$val%'";
  559 + if ($not) $sql = "not ($sql)";
559 560 break;
560 561 case ExprOp::STARTS_WITH:
561 562 $sql = "$fieldname LIKE '$val%'";
  563 + if ($not) $sql = "not ($sql)";
562 564 break;
563 565 case ExprOp::ENDS_WITH:
564 566 $sql = "$fieldname LIKE '%$val'";
  567 + if ($not) $sql = "not ($sql)";
565 568 break;
566 569 case ExprOp::IS:
567   - $sql = "$fieldname = $quote$val$quote";
  570 + if ($not)
  571 + $sql = "$fieldname != $quote$val$quote";
  572 + else
  573 + $sql = "$fieldname = $quote$val$quote";
568 574 break;
569 575 case ExprOp::GREATER_THAN :
570   - $sql = "$fieldname > $quote$val$quote";
  576 + if ($not)
  577 + $sql = "$fieldname <= $quote$val$quote";
  578 + else
  579 + $sql = "$fieldname > $quote$val$quote";
571 580 break;
572 581 case ExprOp::GREATER_THAN_EQUAL :
573   - $sql = "$fieldname >= $quote$val$quote";
  582 + if ($not)
  583 + $sql = "$fieldname < $quote$val$quote";
  584 + else
  585 + $sql = "$fieldname >= $quote$val$quote";
574 586 break;
575 587 case ExprOp::LESS_THAN :
576   - $sql = "$fieldname < $quote$val$quote";
  588 + if ($not)
  589 + $sql = "$fieldname >= $quote$val$quote";
  590 + else
  591 + $sql = "$fieldname < $quote$val$quote";
577 592 break;
578 593 case ExprOp::LESS_THAN_EQUAL :
579   - $sql = "$fieldname <= $quote$val$quote";
  594 + if ($not)
  595 + $sql = "$fieldname > $quote$val$quote";
  596 + else
  597 + $sql = "$fieldname <= $quote$val$quote";
580 598 break;
581 599 default:
582   - throw new Exception('Unknown op: ' . $op);
583   - }
584   -
585   - if ($not)
586   - {
587   - $sql = "not ($sql)";
  600 + throw new Exception(sprintf(_kt('Unknown op: %s'), $op));
588 601 }
589 602  
590 603 return $sql;
... ... @@ -741,7 +754,7 @@ class BetweenValueExpr extends ValueExpr
741 754 {
742 755 if ($op != ExprOp::BETWEEN)
743 756 {
744   - throw new Exception('Unexpected operator: ' . $op);
  757 + throw new Exception(sprintf(_kt('Unexpected operator: %s'), $op));
745 758 }
746 759  
747 760 $quote = '';
... ...