mirror of
https://github.com/Combodo/iTop.git
synced 2026-03-06 17:44:12 +01:00
N°1968 uniqueness rules : fix search for classes hierarchy, disallow 'attributes' property overrides
This commit is contained in:
@@ -1581,12 +1581,13 @@ abstract class DBObject implements iDisplay
|
||||
*/
|
||||
protected function GetSearchForUniquenessRule($sUniquenessRuleId, $aUniquenessRuleProperties)
|
||||
{
|
||||
$sCurrentClass = get_class($this);
|
||||
$sOqlUniquenessQuery = "SELECT $sCurrentClass";
|
||||
$sRuleRootClass = $aUniquenessRuleProperties['root_class'];
|
||||
$sOqlUniquenessQuery = "SELECT $sRuleRootClass";
|
||||
if (!(empty($sUniquenessFilter = $aUniquenessRuleProperties['filter'])))
|
||||
{
|
||||
$sOqlUniquenessQuery .= ' WHERE '.$sUniquenessFilter;
|
||||
}
|
||||
/** @var \DBObjectSearch $oUniquenessQuery */
|
||||
$oUniquenessQuery = DBObjectSearch::FromOQL($sOqlUniquenessQuery);
|
||||
|
||||
if (!$this->IsNew())
|
||||
@@ -1600,6 +1601,12 @@ abstract class DBObject implements iDisplay
|
||||
$oUniquenessQuery->AddCondition($sAttributeCode, $attributeValue, '=');
|
||||
}
|
||||
|
||||
$aChildClassesWithRuleDisabled = MetaModel::GetChildClassesWithDisabledUniquenessRule($sRuleRootClass, $sUniquenessRuleId);
|
||||
if (!empty($aChildClassesWithRuleDisabled))
|
||||
{
|
||||
$oUniquenessQuery->AddConditionForInOperatorUsingParam('finalclass', $aChildClassesWithRuleDisabled, false);
|
||||
}
|
||||
|
||||
return $oUniquenessQuery;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user