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 | 1075 | { |
| 1076 | 1076 | $left = $expr->left(); |
| 1077 | 1077 | $right = $expr->right(); |
| 1078 | + $isNot = $expr->not(); | |
| 1078 | 1079 | if ($left->isMetadataField()) |
| 1079 | 1080 | { |
| 1080 | 1081 | $offset = $this->resolveMetadataOffset($expr) + 1; |
| 1081 | 1082 | |
| 1082 | 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 | 1097 | else |
| 1087 | 1098 | { |
| 1088 | 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 | 1103 | return $query; |
| 1093 | 1104 | } | ... | ... |