19 private const STRICT_FIELD_FORMAT =
'/^\-?[0-9]+\.?[0-9]*\|[A-Z]{3}$/';
20 private const LIGHT_FIELD_FORMAT =
'/^\-?[0-9]+\.?[0-9]*(\|[A-Z]{3})?$/';
25 'DESCRIPTION' => Loc::getMessage(
'USER_TYPE_MONEY_DESCRIPTION'),
26 'BASE_TYPE' => CUserTypeManager::BASE_TYPE_STRING,
35 return 'varchar(200)';
40 $fieldName = HtmlFilter::encode(
41 $userField[
'EDIT_FORM_LABEL'] ?: $userField[
'FIELD_NAME']
46 if ($userField[
'MULTIPLE'] ===
'N')
48 if (!self::checkValueFormat($userField, $value))
51 'id' => $userField[
'FIELD_NAME'],
52 'text' => Loc::getMessage(
'USER_TYPE_MONEY_ERR_BAD_SINGLE_FORMAT',
54 '#FIELD_NAME#' => $fieldName,
64 foreach ($value as $row)
68 || !self::checkValueFormat($userField, $row)
72 'id' => $userField[
'FIELD_NAME'],
73 'text' => Loc::getMessage(
'USER_TYPE_MONEY_ERR_BAD_ROW_FORMAT',
75 '#FIELD_NAME#' => $fieldName,
85 if (!self::checkValueFormat($userField, $value))
88 'id' => $userField[
'FIELD_NAME'],
89 'text' => Loc::getMessage(
'USER_TYPE_MONEY_ERR_BAD_SINGLE_FORMAT',
91 '#FIELD_NAME#' => $fieldName,
109 if ($value ===
'' || $value ===
null)
114 if (!self::checkValueFormat($userField, $value))
119 [$value,
$currency] = static::unFormatFromDb($value);
125 if (self::isStrictFormat($userField))
129 $currency = CurrencyManager::getBaseCurrency();
132 return static::formatToDB($value,
$currency);
146 [$value,
$currency] = static::unFormatFromDb($userField[
'SETTINGS'][
'DEFAULT_VALUE'] ??
null);
151 $currency = CurrencyManager::getBaseCurrency();
153 $value = static::formatToDB($value,
$currency);
157 'DEFAULT_VALUE' => $value,
170 $value = trim($value);
176 $value = (string)Editor::prepareValue($value);
180 return $value . static::DB_SEPARATOR .
$currency;
191 if ($value ===
null || $value ===
'')
199 $result = explode(static::DB_SEPARATOR, $value);
208 private static function checkValueFormat(
array $userField, $value): bool
210 if ($value ===
'' || $value ===
null)
215 $isStrictFormat = self::isStrictFormat($userField);
217 if (!$isStrictFormat)
224 $value = (string)$value;
228 if (!is_string($value))
233 $format = $isStrictFormat
234 ? self::STRICT_FIELD_FORMAT
235 : self::LIGHT_FIELD_FORMAT
238 if (!preg_match($format, $value, $prepared))
246 private static function isStrictFormat(
array $userField): bool
248 return ($userField[
'SETTINGS'][
'STRICT_FORMAT'] ??
'N') ===
'Y';
static onBeforeSave(array $userField, $value)
static formatToDb(string $value, ?string $currency)
static unFormatFromDb(?string $value)
static checkFields(array $userField, $value)
static prepareSettings(array $userField)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"