Commit ef867e8d448ae57ebb37b1174a66fc7dacf3e7fd
1 parent
66c803e7
Merged in from STABLE trunk...
KTS-3679 "Metadata IS NOT search returning matches" Fixed. Catered for when no values are provided for fields. Committed By: Conrad Vermeulen Reviewed By: Megan Watson git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/STABLE/branches/3.5.3a-Release-Branch@9322 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
13 additions
and
2 deletions
search2/search/expr.inc.php
| @@ -1075,19 +1075,30 @@ class SQLQueryBuilder implements QueryBuilder | @@ -1075,19 +1075,30 @@ class SQLQueryBuilder implements QueryBuilder | ||
| 1075 | { | 1075 | { |
| 1076 | $left = $expr->left(); | 1076 | $left = $expr->left(); |
| 1077 | $right = $expr->right(); | 1077 | $right = $expr->right(); |
| 1078 | + $isNot = $expr->not(); | ||
| 1078 | if ($left->isMetadataField()) | 1079 | if ($left->isMetadataField()) |
| 1079 | { | 1080 | { |
| 1080 | $offset = $this->resolveMetadataOffset($expr) + 1; | 1081 | $offset = $this->resolveMetadataOffset($expr) + 1; |
| 1081 | 1082 | ||
| 1082 | $fieldset = $left->getField(); | 1083 | $fieldset = $left->getField(); |
| 1083 | - $query = '(' . "df$offset.name='$fieldset' AND " . $right->getSQL($left, "dfl$offset.value", $expr->op(), $expr->not()) . ')'; | 1084 | + $query = '('; |
| 1085 | + | ||
| 1086 | + if ($isNot) | ||
| 1087 | + { | ||
| 1088 | + $query .= "df$offset.name IS NULL OR "; | ||
| 1089 | + } | ||
| 1090 | + | ||
| 1091 | + $query .= '(' . "df$offset.name='$fieldset' AND " . $right->getSQL($left, "dfl$offset.value", $expr->op(), $isNot) . ')'; | ||
| 1092 | + | ||
| 1093 | + | ||
| 1094 | + $query .= ')'; | ||
| 1084 | 1095 | ||
| 1085 | } | 1096 | } |
| 1086 | else | 1097 | else |
| 1087 | { | 1098 | { |
| 1088 | $fieldname = $this->getFieldnameFromExpr($expr); | 1099 | $fieldname = $this->getFieldnameFromExpr($expr); |
| 1089 | 1100 | ||
| 1090 | - $query = $right->getSQL($left, $left->modifyName($fieldname), $expr->op(), $expr->not());; | 1101 | + $query = $right->getSQL($left, $left->modifyName($fieldname), $expr->op(), $isNot); |
| 1091 | } | 1102 | } |
| 1092 | return $query; | 1103 | return $query; |
| 1093 | } | 1104 | } |