From 243aab103076a1fff7f4b80912d2cd45de95222d Mon Sep 17 00:00:00 2001 From: Pierre Goiffon Date: Mon, 18 Mar 2019 16:07:36 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B01968=20Uniqueness=20:=20do=20not=20allow?= =?UTF-8?q?=20invalid=20rule=20overrides=20definition=20On=20overrides=20d?= =?UTF-8?q?isabled=20key=20must=20has=20a=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/metamodel.class.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) 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');