mirror of
https://github.com/Combodo/iTop.git
synced 2026-05-17 22:39:03 +02:00
Advanced Search
SVN:b1162[5396]
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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,
|
||||
),
|
||||
);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user