mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-24 11:08:45 +02:00
N°931: TagSet search (manage undefined values) unit tests
This commit is contained in:
@@ -157,8 +157,7 @@ class CriterionToOQL extends CriterionConversionAbstract
|
||||
{
|
||||
$aValues = self::GetValues($aCriteria);
|
||||
$sValue = self::GetValue($aValues, 0);
|
||||
|
||||
if (empty($sValue))
|
||||
if (empty($sValue) && (!(isset($aCriteria['has_undefined'])) || !($aCriteria['has_undefined'])))
|
||||
{
|
||||
return "1";
|
||||
}
|
||||
@@ -183,17 +182,34 @@ class CriterionToOQL extends CriterionConversionAbstract
|
||||
{
|
||||
$aValues = self::GetValues($aCriteria);
|
||||
$aRawValues = array();
|
||||
$bHasUnDefined = isset($aCriteria['has_undefined']) ? $aCriteria['has_undefined'] : false;
|
||||
for($i = 0; $i < count($aValues); $i++)
|
||||
{
|
||||
$aRawValues[] = self::GetValue($aValues, $i);
|
||||
$sRawValue = self::GetValue($aValues, $i);
|
||||
if (strlen($sRawValue) == 0)
|
||||
{
|
||||
$bHasUnDefined = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
$aRawValues[] = $sRawValue;
|
||||
}
|
||||
}
|
||||
$sValue = implode(' ', $aRawValues);
|
||||
|
||||
if (empty($sValue))
|
||||
{
|
||||
if ($bHasUnDefined)
|
||||
{
|
||||
return "({$sRef} = '')";
|
||||
}
|
||||
return "1";
|
||||
}
|
||||
|
||||
if ($bHasUnDefined)
|
||||
{
|
||||
return "((({$sRef} MATCHES '{$sValue}') OR ({$sRef} = '')) AND 1)";
|
||||
}
|
||||
return "({$sRef} MATCHES '{$sValue}')";
|
||||
}
|
||||
|
||||
|
||||
@@ -674,8 +674,18 @@ class CriterionToSearchForm extends CriterionConversionAbstract
|
||||
{
|
||||
case 'MATCHES':
|
||||
// Nothing special to do
|
||||
if (isset($aCriteria['has_undefined']) && $aCriteria['has_undefined'])
|
||||
{
|
||||
if (!isset($aCriteria['values']))
|
||||
{
|
||||
$aCriteria['values'] = array();
|
||||
}
|
||||
// Convention for 'undefined' tag set
|
||||
$aCriteria['values'][] = array('value' => '', 'label' => Dict::S('Enum:Undefined'));
|
||||
}
|
||||
break;
|
||||
|
||||
case 'OR':
|
||||
case 'ISNULL':
|
||||
$aCriteria['operator'] = CriterionConversionAbstract::OP_EQUALS;
|
||||
if (isset($aCriteria['has_undefined']) && $aCriteria['has_undefined'])
|
||||
@@ -684,8 +694,21 @@ class CriterionToSearchForm extends CriterionConversionAbstract
|
||||
{
|
||||
$aCriteria['values'] = array();
|
||||
}
|
||||
// Convention for 'undefined' enums
|
||||
$aCriteria['values'][] = array('value' => 'null', 'label' => Dict::S('Enum:Undefined'));
|
||||
// Convention for 'undefined' tag set
|
||||
$aCriteria['values'][] = array('value' => '', 'label' => Dict::S('Enum:Undefined'));
|
||||
}
|
||||
break;
|
||||
|
||||
case '=':
|
||||
$aCriteria['operator'] = CriterionConversionAbstract::OP_EQUALS;
|
||||
if (isset($aCriteria['has_undefined']) && $aCriteria['has_undefined'])
|
||||
{
|
||||
if (!isset($aCriteria['values']))
|
||||
{
|
||||
$aCriteria['values'] = array();
|
||||
}
|
||||
// Convention for 'undefined' tag set
|
||||
$aCriteria['values'][] = array('value' => '', 'label' => Dict::S('Enum:Undefined'));
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user