N°4894 - Improve AttributeDecimal validation during CSV import (#248)

* Update AttributeDecimal validation pattern

* Update phpdoc

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>

* Reduce unneeded sprintf flags

---------

Co-authored-by: Molkobain <lajarige.guillaume@free.fr>
This commit is contained in:
Thomas Casteleyn
2024-03-08 17:03:51 +01:00
committed by GitHub
parent 2ced460ec6
commit 5be386d03e

View File

@@ -3201,9 +3201,19 @@ class AttributeDecimal extends AttributeDBField
{
$iNbDigits = $this->Get('digits');
$iPrecision = $this->Get('decimals');
$iNbIntegerDigits = $iNbDigits - $iPrecision - 1; // -1 because the first digit is treated separately in the pattern below
$iNbIntegerDigits = $iNbDigits - $iPrecision;
return "^[\-\+]?[0-9]\d{0,$iNbIntegerDigits}(\.\d{0,$iPrecision})?$";
return "^[\-\+]?\d{1,$iNbIntegerDigits}(\.\d{0,$iPrecision})?$";
}
/**
* @inheritDoc
* @since 3.2.0
*/
public function CheckFormat($value)
{
$sRegExp = $this->GetValidationPattern();
return preg_match("/$sRegExp/", $value);
}
public function GetBasicFilterOperators()
@@ -3298,7 +3308,7 @@ class AttributeDecimal extends AttributeDBField
if (!is_null($value) && ($value !== ''))
{
$value = sprintf("%01.".$this->Get('decimals')."F", $value);
$value = sprintf("%1.".$this->Get('decimals')."F", $value);
}
return $value; // null or string
}