Advanced Search: n:n links default criteria are not read-only and organizations are hierarchical

SVN:trunk[5679]
This commit is contained in:
Eric Espié
2018-04-17 13:38:59 +00:00
parent bd84dd9f2c
commit 7bf49011a3
2 changed files with 28 additions and 1 deletions

View File

@@ -573,7 +573,31 @@ EOF
if (MetaModel::IsValidAttCode($sDestClass, $sAttCode) && !empty($defaultValue))
{
$oSearch->AddCondition($sAttCode, $defaultValue);
// Add Hierarchical condition if hierarchical key
$oAttDef = MetaModel::GetAttributeDef($sDestClass, $sAttCode);
if (isset($oAttDef) && ($oAttDef->IsExternalKey()))
{
try
{
/** @var AttributeExternalKey $oAttDef */
$sTargetClass = $oAttDef->GetTargetClass();
$sHierarchicalKeyCode = MetaModel::IsHierarchicalClass($sTargetClass);
if ($sHierarchicalKeyCode !== false)
{
$oFilter = new DBObjectSearch($sTargetClass);
$oFilter->AddCondition('id', $defaultValue);
$oHKFilter = new DBObjectSearch($sTargetClass);
$oHKFilter->AddCondition_PointingTo($oFilter, $sHierarchicalKeyCode, TREE_OPERATOR_BELOW);
$oSearch->AddCondition_PointingTo($oHKFilter, $sAttCode);
}
} catch (Exception $e)
{
}
}
else
{
$oSearch->AddCondition($sAttCode, $defaultValue);
}
}
}
}

View File

@@ -194,11 +194,14 @@ class SearchForm
}
$bIsRemovable = true;
/*
if (isset($aExtraParams['selection_mode']) && $aExtraParams['selection_mode'])
{
// Mark all criterion as read-only and non-removable
// This is a controversy, the parameters were not read-only before
$bIsRemovable = false;
}
*/
$aFields = $this->GetFields($oSet);
$oSearch = $oSet->GetFilter();
$aCriterion = $this->GetCriterion($oSearch, $aFields, $aArgs, $bIsRemovable);