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,7 +138,7 @@ class Expr
138 */ 138 */
139 public function __toString() 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,35 +556,48 @@ class ValueExpr extends Expr
556 { 556 {
557 case ExprOp::CONTAINS: 557 case ExprOp::CONTAINS:
558 $sql = "$fieldname LIKE '%$val%'"; 558 $sql = "$fieldname LIKE '%$val%'";
  559 + if ($not) $sql = "not ($sql)";
559 break; 560 break;
560 case ExprOp::STARTS_WITH: 561 case ExprOp::STARTS_WITH:
561 $sql = "$fieldname LIKE '$val%'"; 562 $sql = "$fieldname LIKE '$val%'";
  563 + if ($not) $sql = "not ($sql)";
562 break; 564 break;
563 case ExprOp::ENDS_WITH: 565 case ExprOp::ENDS_WITH:
564 $sql = "$fieldname LIKE '%$val'"; 566 $sql = "$fieldname LIKE '%$val'";
  567 + if ($not) $sql = "not ($sql)";
565 break; 568 break;
566 case ExprOp::IS: 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 break; 574 break;
569 case ExprOp::GREATER_THAN : 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 break; 580 break;
572 case ExprOp::GREATER_THAN_EQUAL : 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 break; 586 break;
575 case ExprOp::LESS_THAN : 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 break; 592 break;
578 case ExprOp::LESS_THAN_EQUAL : 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 break; 598 break;
581 default: 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 return $sql; 603 return $sql;
@@ -741,7 +754,7 @@ class BetweenValueExpr extends ValueExpr @@ -741,7 +754,7 @@ class BetweenValueExpr extends ValueExpr
741 { 754 {
742 if ($op != ExprOp::BETWEEN) 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 $quote = ''; 760 $quote = '';