1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
val_num_ex.php
См. документацию.
1<?php
2
4
6{
7 public static function GetDescription()
8 {
9 return array(
10 "NAME" => "number_ext", // unique validator string ID
11 "DESCRIPTION" => GetMessage('FORM_VALIDATOR_VAL_NUM_EX_DESCRIPTION'), // validator description
12 "TYPES" => array("text", "textarea"), // list of types validator can be applied.
13 "SETTINGS" => array("CFormValidatorNumberEx", "GetSettings"), // method returning array of validator settings, optional
14 "CONVERT_TO_DB" => array("CFormValidatorNumberEx", "ToDB"), // method, processing validator settings to string to put to db, optional
15 "CONVERT_FROM_DB" => array("CFormValidatorNumberEx", "FromDB"), // method, processing validator settings from string from db, optional
16 "HANDLER" => array("CFormValidatorNumberEx", "DoValidate") // main validation method
17 );
18 }
19
20 public static function GetSettings()
21 {
22 return array(
23 "NUMBER_FROM" => array(
24 "TITLE" => GetMessage("FORM_VALIDATOR_VAL_NUM_EX_SETTINGS_NUMBER_FROM"),
25 "TYPE" => "TEXT",
26 "DEFAULT" => "0",
27 ),
28
29 "NUMBER_TO" => array(
30 "TITLE" => GetMessage("FORM_VALIDATOR_VAL_NUM_EX_SETTINGS_NUMBER_TO"),
31 "TYPE" => "TEXT",
32 "DEFAULT" => "100",
33 ),
34
35 "NUMBER_FLOAT" => array(
36 "TITLE" => GetMessage("FORM_VALIDATOR_VAL_NUM_EX_SETTINGS_NUMBER_FLOAT"),
37 "TYPE" => "CHECKBOX",
38 "DEFAULT" => "Y",
39 ),
40 );
41 }
42
43 public static function ToDB($arParams)
44 {
45 $arParams["NUMBER_FLOAT"] = $arParams["NUMBER_FLOAT"] == "Y" ? "Y" : "N";
46 $arParams["NUMBER_FROM"] = $arParams["NUMBER_FLOAT"] == "Y" ? floatval($arParams["NUMBER_FROM"]) : intval($arParams["NUMBER_FROM"]);
47 $arParams["NUMBER_TO"] = $arParams["NUMBER_FLOAT"] == "Y" ? floatval($arParams["NUMBER_TO"]) : intval($arParams["NUMBER_TO"]);
48
49 if ($arParams["NUMBER_FROM"] > $arParams["NUMBER_TO"])
50 {
51 $tmp = $arParams["NUMBER_FROM"];
52 $arParams["NUMBER_FROM"] = $arParams["NUMBER_TO"];
53 $arParams["NUMBER_TO"] = $tmp;
54 }
55
56 return serialize($arParams);
57 }
58
59 public static function FromDB($strParams)
60 {
61 return unserialize($strParams, ['allowed_classes' => false]);
62 }
63
64 public static function DoValidate($arParams, $arQuestion, $arAnswers, $arValues)
65 {
66 global $APPLICATION;
67
68 foreach ($arValues as $value)
69 {
70 if ($value == '') continue;
71
72 // do not return error if NaN, but set it to number -
73
74
75 // empty string is not a number but we won't return error - crossing with "required" mark
76 if (!is_numeric($value))
77 {
78 $APPLICATION->ThrowException(GetMessage("FORM_VALIDATOR_VAL_NUM_EX_ERROR_NAN"));
79 return false;
80 }
81
82 if ($arParams["NUMBER_FLOAT"] != "Y" && strval($value + 0) !== strval($value))
83 {
84 $APPLICATION->ThrowException(GetMessage("FORM_VALIDATOR_VAL_NUM_EX_ERROR_NOTINT"));
85 return false;
86 }
87
88 // check minimum number
89 if ($arParams["NUMBER_FROM"] <> '' && $value < $arParams["NUMBER_FROM"])
90 {
91 $APPLICATION->ThrowException(GetMessage("FORM_VALIDATOR_VAL_NUM_EX_ERROR_LESS"));
92 return false;
93 }
94
95 // check maximum number
96 if ($arParams["NUMBER_TO"] <> '' && $value > $arParams["NUMBER_TO"])
97 {
98 $APPLICATION->ThrowException(GetMessage("FORM_VALIDATOR_VAL_NUM_EX_ERROR_MORE"));
99 return false;
100 }
101 }
102
103 return true;
104 }
105}
106
107AddEventHandler("form", "onFormValidatorBuildList", array("CFormValidatorNumberEx", "GetDescription"));
$arParams
Определения access_dialog.php:21
global $APPLICATION
Определения include.php:80
static ToDB($arParams)
Определения val_num_ex.php:43
static GetSettings()
Определения val_num_ex.php:20
static DoValidate($arParams, $arQuestion, $arAnswers, $arValues)
Определения val_num_ex.php:64
static FromDB($strParams)
Определения val_num_ex.php:59
static GetDescription()
Определения val_num_ex.php:7
$arValues
Определения component_props.php:25
if(!is_array($prop["VALUES"])) $tmp
Определения component_props.php:203
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
Определения tools.php:5165
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
GetMessage($name, $aReplace=null)
Определения tools.php:3397