Commit 4913ce078e43a4cc98874c9f45b3930934b4dcb3
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 = ''; | ... | ... |