Commit 0a5279c01ab4d3dd3f66c0d44c45abbfd84c1368
1 parent
a9594014
KTS-3168
"Searching integer field types results in SQL error" Fixed. Committed By: Conrad Vermeulen Reviewed By: Megan Watson git-svn-id: https://kt-dms.svn.sourceforge.net/svnroot/kt-dms/trunk@8257 c91229c3-7414-0410-bfa2-8a42b809f60b
Showing
1 changed file
with
13 additions
and
2 deletions
search2/search/fieldRegistry.inc.php
| @@ -158,10 +158,18 @@ class ExprFieldRegistry | @@ -158,10 +158,18 @@ class ExprFieldRegistry | ||
| 158 | 158 | ||
| 159 | public function resolveMetadataField($fieldset, $field) | 159 | public function resolveMetadataField($fieldset, $field) |
| 160 | { | 160 | { |
| 161 | + if ($fieldset instanceof ValueExpr) | ||
| 162 | + { | ||
| 163 | + $fieldset = $fieldset->getValue(); | ||
| 164 | + } | ||
| 161 | if (!array_key_exists($fieldset,$this->metadata)) | 165 | if (!array_key_exists($fieldset,$this->metadata)) |
| 162 | { | 166 | { |
| 163 | throw new ResolutionException("Metadata class for fieldset '$fieldset' and field '$field' not found."); | 167 | throw new ResolutionException("Metadata class for fieldset '$fieldset' and field '$field' not found."); |
| 164 | } | 168 | } |
| 169 | + if ($field instanceof ValueExpr) | ||
| 170 | + { | ||
| 171 | + $field = $field->getValue(); | ||
| 172 | + } | ||
| 165 | if (!array_key_exists($field,$this->metadata[$fieldset])) | 173 | if (!array_key_exists($field,$this->metadata[$fieldset])) |
| 166 | { | 174 | { |
| 167 | throw new ResolutionException("Metadata class for fieldset '$fieldset' and field '$field' not found."); | 175 | throw new ResolutionException("Metadata class for fieldset '$fieldset' and field '$field' not found."); |
| @@ -249,7 +257,7 @@ class ExprFieldRegistry | @@ -249,7 +257,7 @@ class ExprFieldRegistry | ||
| 249 | private function registerMetdataFields() | 257 | private function registerMetdataFields() |
| 250 | { | 258 | { |
| 251 | $sql = "SELECT | 259 | $sql = "SELECT |
| 252 | - fs.name as fieldset, f.name as field, fs.id as fsid, f.id as fid | 260 | + fs.name as fieldset, f.name as field, fs.id as fsid, f.id as fid, f.data_type |
| 253 | FROM | 261 | FROM |
| 254 | fieldsets fs | 262 | fieldsets fs |
| 255 | INNER JOIN document_fields f ON f.parent_fieldset=fs.id | 263 | INNER JOIN document_fields f ON f.parent_fieldset=fs.id |
| @@ -263,6 +271,7 @@ class ExprFieldRegistry | @@ -263,6 +271,7 @@ class ExprFieldRegistry | ||
| 263 | $field = addslashes($record['field']); | 271 | $field = addslashes($record['field']); |
| 264 | $fieldsetid = $record['fsid']; | 272 | $fieldsetid = $record['fsid']; |
| 265 | $fieldid = $record['fid']; | 273 | $fieldid = $record['fid']; |
| 274 | + $type = $record['data_type']; | ||
| 266 | $classname = "MetadataField$fieldid"; | 275 | $classname = "MetadataField$fieldid"; |
| 267 | 276 | ||
| 268 | $classdefn = " | 277 | $classdefn = " |
| @@ -270,7 +279,9 @@ class ExprFieldRegistry | @@ -270,7 +279,9 @@ class ExprFieldRegistry | ||
| 270 | { | 279 | { |
| 271 | public function __construct() | 280 | public function __construct() |
| 272 | { | 281 | { |
| 273 | - parent::__construct('$fieldset','$field',$fieldsetid, $fieldid); | 282 | + parent::__construct('$fieldset','$field',$fieldsetid, $fieldid);" . |
| 283 | + | ||
| 284 | + (($type=='INT')?'$this->isValueQuoted(false);':'') . " | ||
| 274 | } | 285 | } |
| 275 | }"; | 286 | }"; |
| 276 | eval($classdefn); | 287 | eval($classdefn); |