From b9e7d8f2d34e044370521d8bf833cdce0888ba36 Mon Sep 17 00:00:00 2001 From: kevin_fourie Date: Mon, 18 Feb 2008 10:17:49 +0000 Subject: [PATCH] Merged in from DEV trunk... --- search2/search/expr.inc.php | 31 ++++++++++++++++++++++++++----- search2/search/fields/FolderField.inc.php | 14 ++++++++++++++ 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/search2/search/expr.inc.php b/search2/search/expr.inc.php index 4674a15..610a3da 100644 --- a/search2/search/expr.inc.php +++ b/search2/search/expr.inc.php @@ -585,9 +585,30 @@ class ValueExpr extends Expr } } + + + public function getSQL($field, $fieldname, $op, $not=false) { - $val = $field->modifyValue($this->getValue()); + $val = $this->getValue(); + switch($op) + { + case ExprOp::LIKE: + + break; + case ExprOp::CONTAINS: + $val = "%$val%"; + break; + case ExprOp::STARTS_WITH: + $val = "$val%"; + break; + case ExprOp::ENDS_WITH: + $val = "%$val"; + break; + } + + + $val = $field->modifyValue($val); $quote = ''; if ($field->isValueQuoted()) { @@ -598,19 +619,19 @@ class ValueExpr extends Expr switch($op) { case ExprOp::LIKE: - $sql = "$fieldname LIKE '$val'"; + $sql = "$fieldname LIKE $quote$val$quote"; if ($not) $sql = "not ($sql)"; break; case ExprOp::CONTAINS: - $sql = "$fieldname LIKE '%$val%'"; + $sql = "$fieldname LIKE $quote$val$quote"; if ($not) $sql = "not ($sql)"; break; case ExprOp::STARTS_WITH: - $sql = "$fieldname LIKE '$val%'"; + $sql = "$fieldname LIKE $quote$val$quote"; if ($not) $sql = "not ($sql)"; break; case ExprOp::ENDS_WITH: - $sql = "$fieldname LIKE '%$val'"; + $sql = "$fieldname LIKE $quote$val$quote"; if ($not) $sql = "not ($sql)"; break; case ExprOp::IS: diff --git a/search2/search/fields/FolderField.inc.php b/search2/search/fields/FolderField.inc.php index acb650a..9205550 100644 --- a/search2/search/fields/FolderField.inc.php +++ b/search2/search/fields/FolderField.inc.php @@ -42,6 +42,7 @@ class FolderField extends DBFieldExpr { parent::__construct('full_path', 'documents', _kt('Folder')); $this->setAlias('Folder'); + $this->isValueQuoted(false); } public function getInputRequirements() @@ -53,6 +54,19 @@ class FolderField extends DBFieldExpr { return DefaultOpCollection::validateParent($this, DefaultOpCollection::$is); } + + public function modifyName($sql) + { + $this->path = $sql; + return "case when position('/' in $sql) = 0 then '/' else reverse(substring(reverse($sql) from position('/' in reverse($sql)) + 1 )) end"; + } + + + public function modifyValue($value) + { + return "case when position('/' in $this->path) = 0 then '/' else '$value' end"; + } + } ?> \ No newline at end of file -- libgit2 0.21.4