N°1968 Uniqueness : do not allow invalid rule overrides definition

On overrides disabled key must has a value
This commit is contained in:
Pierre Goiffon
2019-03-18 16:07:36 +01:00
parent 22dba9ae07
commit 243aab1030

View File

@@ -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');