Commit da5255f75676445d98df61ddc1639ec7b741dfb2

Authored by Conrad Vermeulen
1 parent a86fcb07

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
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);