Advanced Search: remove the conversion IN <=> NOT IN for external keys

SVN:b1162[5564]
This commit is contained in:
Eric Espié
2018-03-29 08:45:46 +00:00
parent 11af11b3be
commit 155034092f
3 changed files with 57 additions and 31 deletions

View File

@@ -68,7 +68,7 @@ class CriterionToSearchForm extends CriterionConversionAbstract
AttributeDefinition::SEARCH_WIDGET_TYPE_NUMERIC => 'NumericToSearchForm',
AttributeDefinition::SEARCH_WIDGET_TYPE_EXTERNAL_KEY => 'ExternalKeyToSearchForm',
AttributeDefinition::SEARCH_WIDGET_TYPE_HIERARCHICAL_KEY => 'ExternalKeyToSearchForm',
AttributeDefinition::SEARCH_WIDGET_TYPE_ENUM => 'ExternalKeyToSearchForm',
AttributeDefinition::SEARCH_WIDGET_TYPE_ENUM => 'EnumToSearchForm',
);
foreach($aAndCriterionRaw as $aCriteria)
@@ -93,6 +93,7 @@ class CriterionToSearchForm extends CriterionConversionAbstract
// Check criteria validity
if (!isset($aCriteria['ref']) || !isset($aAllFields[$aCriteria['ref']]))
{
$aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW;
$aCriteria['label'] = Dict::S('UI:Search:Criteria:Raw:Filtered');
if (isset($aCriteria['ref']))
{
@@ -492,8 +493,7 @@ class CriterionToSearchForm extends CriterionConversionAbstract
return $aCriteria;
}
protected static function ExternalKeyToSearchForm($aCriteria, $aFields)
protected static function EnumToSearchForm($aCriteria, $aFields)
{
$sOperator = $aCriteria['operator'];
switch ($sOperator)
@@ -503,6 +503,7 @@ class CriterionToSearchForm extends CriterionConversionAbstract
$aCriteria['operator'] = CriterionConversionAbstract::OP_IN;
break;
case 'NOT IN':
case 'NOTIN':
case '!=':
// Same as NOT IN
$aCriteria = self::RevertValues($aCriteria, $aFields);
@@ -533,6 +534,27 @@ class CriterionToSearchForm extends CriterionConversionAbstract
return $aCriteria;
}
protected static function ExternalKeyToSearchForm($aCriteria, $aFields)
{
$sOperator = $aCriteria['operator'];
switch ($sOperator)
{
case '=':
// Same as IN
$aCriteria['operator'] = CriterionConversionAbstract::OP_IN;
break;
case 'IN':
// Nothing special to do
break;
default:
// Unknown operator
$aCriteria['widget'] = AttributeDefinition::SEARCH_WIDGET_TYPE_RAW;
break;
}
return $aCriteria;
}
/**
* @param $aCriteria
* @param $aFields