diff --git a/core/metamodel.class.php b/core/metamodel.class.php index 2700942cd..7092eaf00 100644 --- a/core/metamodel.class.php +++ b/core/metamodel.class.php @@ -3169,12 +3169,17 @@ abstract class MetaModel $iMissingMandatoryKeysNb = $UNIQUENESS_MANDATORY_KEYS_NB; /** @var boolean $bHasNonDisabledKeys true if rule contains at least one key that is not 'disabled' */ $bHasNonDisabledKeys = false; + $bDisabledKeyValue = null; foreach ($aUniquenessRuleProperties as $sUniquenessRuleKey => $aUniquenessRuleProperty) { - if (($sUniquenessRuleKey === 'disabled') && (!is_null($aUniquenessRuleProperty))) + if ($sUniquenessRuleKey === 'disabled') { - continue; + $bDisabledKeyValue = $aUniquenessRuleProperty; + if (!is_null($aUniquenessRuleProperty)) + { + continue; + } } if (is_null($aUniquenessRuleProperty)) { @@ -3211,6 +3216,10 @@ abstract class MetaModel { throw new CoreUnexpectedValue('Uniqueness rule : only the \'disabled\' key can be overridden'); } + if ($bRuleOverride && is_null($bDisabledKeyValue)) + { + throw new CoreUnexpectedValue('Uniqueness rule : when overriding a rule, value must be set for the \'disabled\' key'); + } if (!$bRuleOverride && $bHasMissingMandatoryKey) { throw new CoreUnexpectedValue('Uniqueness rule : missing mandatory property');