Commit 0a5279c01ab4d3dd3f66c0d44c45abbfd84c1368

Authored by conradverm
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
search2/search/fieldRegistry.inc.php
... ... @@ -158,10 +158,18 @@ class ExprFieldRegistry
158 158  
159 159 public function resolveMetadataField($fieldset, $field)
160 160 {
  161 + if ($fieldset instanceof ValueExpr)
  162 + {
  163 + $fieldset = $fieldset->getValue();
  164 + }
161 165 if (!array_key_exists($fieldset,$this->metadata))
162 166 {
163 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 173 if (!array_key_exists($field,$this->metadata[$fieldset]))
166 174 {
167 175 throw new ResolutionException("Metadata class for fieldset '$fieldset' and field '$field' not found.");
... ... @@ -249,7 +257,7 @@ class ExprFieldRegistry
249 257 private function registerMetdataFields()
250 258 {
251 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 261 FROM
254 262 fieldsets fs
255 263 INNER JOIN document_fields f ON f.parent_fieldset=fs.id
... ... @@ -263,6 +271,7 @@ class ExprFieldRegistry
263 271 $field = addslashes($record['field']);
264 272 $fieldsetid = $record['fsid'];
265 273 $fieldid = $record['fid'];
  274 + $type = $record['data_type'];
266 275 $classname = "MetadataField$fieldid";
267 276  
268 277 $classdefn = "
... ... @@ -270,7 +279,9 @@ class ExprFieldRegistry
270 279 {
271 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 287 eval($classdefn);
... ...