Advanced Search

SVN:b1162[5396]
This commit is contained in:
Eric Espié
2018-03-09 08:43:28 +00:00
parent c04f73e86b
commit 213d591eb0
3 changed files with 36 additions and 13 deletions

View File

@@ -233,8 +233,7 @@ class CMDBSource
}
catch(mysqli_sql_exception $e)
{
throw new MySQLException('Could not connect to the DB server',
array('host' => $sServer, 'user' => $sUser), $e);
throw new MySQLException('Could not connect to the DB server', array('host' => $sServer, 'user' => $sUser), $e);
}
if ($bCheckTlsAfterConnection

View File

@@ -38,10 +38,17 @@ class CriterionToSearchForm extends CriterionConversionAbstract
foreach($aAndCriterionRaw as $aCriteria)
{
if (array_key_exists($aCriteria['widget'], $aMappingOperatorToFunction))
if (array_key_exists('widget', $aCriteria))
{
$sFct = $aMappingOperatorToFunction[$aCriteria['widget']];
$aAndCriterion[] = self::$sFct($aCriteria);
if (array_key_exists($aCriteria['widget'], $aMappingOperatorToFunction))
{
$sFct = $aMappingOperatorToFunction[$aCriteria['widget']];
$aAndCriterion[] = self::$sFct($aCriteria);
}
else
{
$aAndCriterion[] = $aCriteria;
}
}
}
@@ -50,21 +57,36 @@ class CriterionToSearchForm extends CriterionConversionAbstract
protected static function TextToSearchForm($aCriteria)
{
$sRef = $aCriteria['ref'];
$sOperator = $aCriteria['operator'];
$aValues = $aCriteria['values'];
$value = $aValues[0]['value'];
if ('' == $value)
{
$aCriteria['operator'] = CriterionConversionAbstract::OP_EMPTY;
return $aCriteria;
}
$bStartWithPercent = $value{0} == '%' ? true : false;
$bEndWithPercent = $value{0} == '%' ? true : false;
switch (true)
{
case ('' == $value and ($sOperator == '=' or $sOperator == 'LIKE')):
$aCriteria['operator'] = CriterionConversionAbstract::OP_EMPTY;
break;
case ('' == $value and $sOperator == '!='):
$aCriteria['operator'] = CriterionConversionAbstract::OP_NOT_EMPTY;
break;
case ($sOperator == 'LIKE' && $bStartWithPercent && $bEndWithPercent):
$aCriteria['operator'] = CriterionConversionAbstract::OP_CONTAINS;
$aValues[0]['value'] = substr($value, 1, strlen($value) - 2);
break;
case ($sOperator == 'LIKE' && $bStartWithPercent):
$aCriteria['operator'] = CriterionConversionAbstract::OP_ENDS_WITH;
$aValues[0]['value'] = substr($value, 1, strlen($value) - 1);
break;
case ($sOperator == 'LIKE' && $bEndWithPercent):
$aCriteria['operator'] = CriterionConversionAbstract::OP_STARTS_WITH;
$aValues[0]['value'] = substr($value, 0, strlen($value) - 1);
break;
}
return $aCriteria;
}
}

View File

@@ -110,6 +110,8 @@ class SearchForm
$oBaseSearch = $oSearch->DeepClone();
$oBaseSearch->ResetCondition();
$sBaseOQL = $sBaseOql = str_replace(' WHERE 1', '', $oBaseSearch->ToOQL());
if (!isset($aExtraParams['table_id']))
{
@@ -123,7 +125,7 @@ class SearchForm
'search' => array(
'fields' => $aFields,
'criterion' => $aCriterion,
'base_oql' => $oBaseSearch->ToOQL(),
'base_oql' => $sBaseOQL,
),
);