Commit c5c0f6f288e9926775eb42f3700aed1ad9369227

Authored by Paul Barrett
1 parent eae00bbb

Fixed search results - was returning no results for a query with more than one criterion

KTC-829. An advanced search for available fieldsets do not yield the desired document.

Fixed

Committed by: Paul Barrett
Showing 1 changed file with 13 additions and 19 deletions
search2/search/expr.inc.php
... ... @@ -2345,21 +2345,15 @@ class OpExpr extends Expr
2345 2345  
2346 2346 if (DefaultOpCollection::isBoolean($expr))
2347 2347 {
2348   - //$query = '(' . $this->buildComplexQuery($left) . ' ' . $expr->op() . ' ' . $this->buildComplexQuery($right) . ')';
2349 2348 $iCriteria = $this->checkComplexQuery($left);
2350   - if(!empty($iCriteria))
2351   - //$oCriteria = $iCriteria;
2352   - $oCriteria[] = $iCriteria;
  2349 + if(!empty($iCriteria)) {
  2350 + $oCriteria = array_merge($oCriteria, $iCriteria);
  2351 + }
2353 2352  
2354 2353 $iCriteria = $this->checkComplexQuery($right);
2355   - if(!empty($iCriteria))
2356   - //$oCriteria = array_merge($oCriteria, $iCriteria);
2357   - $oCriteria[] = $iCriteria;
2358   -
2359   - /*if ($expr->not())
2360   - {
2361   - $query = "NOT $query";
2362   - }*/
  2354 + if(!empty($iCriteria)) {
  2355 + $oCriteria = array_merge($oCriteria, $iCriteria);
  2356 + }
2363 2357 }
2364 2358 else
2365 2359 {
... ... @@ -2379,13 +2373,11 @@ class OpExpr extends Expr
2379 2373 {
2380 2374 $iCriteria = array();
2381 2375  
2382   - $iCriteria[0] = array();
2383   -
2384   - $iCriteria[0]['field'] = $fieldname;
2385   - $iCriteria[0]['value'] = $value;
2386   - $iCriteria[0]['not'] = $expr->not();
  2376 + $iCriteria['field'] = $fieldname;
  2377 + $iCriteria['value'] = $value;
  2378 + $iCriteria['not'] = $expr->not();
2387 2379  
2388   - $oCriteria[] = $iCriteria[0];
  2380 + $oCriteria[] = $iCriteria;
2389 2381 }
2390 2382  
2391 2383 //global $default;
... ... @@ -2405,9 +2397,11 @@ class OpExpr extends Expr
2405 2397 return $oCriteria;
2406 2398 }
2407 2399  
  2400 + // NOTE $oColumns = $oCriteria from calling function
  2401 + // TODO variable name change?
  2402 + // WHat is the purpose of this function, it seems to be a double check on the search results but why is this needed?
2408 2403 public function checkValues($document_id, $oColumns)
2409 2404 {
2410   -
2411 2405 foreach($oColumns as $column)
2412 2406 {
2413 2407 $rsField = DBUtil::getResultArray("SELECT df.name, dfl.value FROM documents d
... ...