1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
val_inn.php
См. документацию.
1
<?php
2
3
IncludeModuleLangFile
(__FILE__);
4
5
class
CFormValidatorINN
6
{
7
public
static
function
GetDescription
()
8
{
9
return
array
(
10
"NAME"
=>
"INN"
,
// validator string ID
11
"DESCRIPTION"
=>
GetMessage
(
"FORM_VALIDATOR_VAL_INN_DESCRIPTION"
),
// validator description
12
"TYPES"
=>
array
(
"text"
,
"textarea"
),
// list of types validator can be applied.
13
"SETTINGS"
=>
array
(
"CFormValidatorINN"
,
"GetSettings"
),
// method returning array of validator settings, optional
14
"CONVERT_TO_DB"
=>
array
(
"CFormValidatorINN"
,
"ToDB"
),
// method, processing validator settings to string to put to db, optional
15
"CONVERT_FROM_DB"
=>
array
(
"CFormValidatorINN"
,
"FromDB"
),
// method, processing validator settings from string from db, optional
16
"HANDLER"
=>
array
(
"CFormValidatorINN"
,
"DoValidate"
)
// main validation method
17
);
18
}
19
20
public
static
function
GetSettings
()
21
{
22
return
array
(
23
"TYPE"
=>
array
(
24
"TITLE"
=>
GetMessage
(
"FORM_VALIDATOR_VAL_INN_SETTINGS_TYPE"
),
25
"TYPE"
=>
"DROPDOWN"
,
26
"VALUES"
=>
array
(
27
"jur"
=>
GetMessage
(
"FORM_VALIDATOR_VAL_INN_SETTINGS_TYPE_JUR"
),
28
"phys"
=>
GetMessage
(
"FORM_VALIDATOR_VAL_INN_SETTINGS_TYPE_PHYS"
),
29
"both"
=>
GetMessage
(
"FORM_VALIDATOR_VAL_INN_SETTINGS_TYPE_BOTH"
),
30
),
31
"DEFAULT"
=>
"both"
,
32
),
33
);
34
}
35
36
public
static
function
ToDB
(
$arParams
)
37
{
38
$arPar =
array
(
39
"TYPE"
=>
$arParams
[
"TYPE"
] ==
"phys"
||
$arParams
[
"TYPE"
] ==
"jur"
?
$arParams
[
"TYPE"
] :
"both"
40
);
41
42
return
serialize($arPar);
43
}
44
45
public
static
function
FromDB
($strParams)
46
{
47
return
unserialize($strParams, [
'allowed_classes'
=>
false
]);
48
}
49
50
public
static
function
DoValidate
(
$arParams
, $arQuestion, $arAnswers,
$arValues
)
51
{
52
global
$APPLICATION
;
53
54
foreach
(
$arValues
as $value)
55
{
56
$value = strval($value);
57
58
if
($value ==
''
)
continue
;
59
60
// check inn
61
$lenValue = mb_strlen($value);
62
if
($lenValue > 0)
63
{
64
$res
=
true
;
65
66
if
((
double
)$value == 0)
67
{
68
$res
=
false
;
69
}
70
else
71
{
72
for
(
$i
= 0;
$i
< $lenValue;
$i
++)
73
{
74
if
($value[
$i
] !==
"0"
&& intval($value[
$i
]) == 0)
75
{
76
$res
=
false
;
77
break
;
78
}
79
}
80
}
81
82
if
(
$res
)
83
{
84
if
(
85
$arParams
[
'TYPE'
] ==
"jur"
&& $lenValue != 10
86
||
87
$arParams
[
'TYPE'
] ==
"phys"
&& $lenValue != 12
88
||
89
$arParams
[
'TYPE'
] ==
"both"
&& $lenValue != 12 && $lenValue != 10
90
)
91
{
92
$res
=
false
;
93
}
94
elseif
(!
CFormValidatorINN::__checkINN
($value))
95
{
96
$res
=
false
;
97
}
98
}
99
100
if
(!
$res
)
101
{
102
$APPLICATION
->ThrowException(
GetMessage
(
"FORM_VALIDATOR_INN_ERROR"
));
103
return
false
;
104
}
105
}
106
}
107
108
return
true
;
109
}
110
111
public
static
function
__checkINN
($value)
112
{
113
$arCheck =
array
(41,37,31,29,23,19,17,13,7,5,3);
114
115
$lenValue = mb_strlen($value);
116
if
($lenValue == 10)
117
{
118
$arCheckArrays =
array
(
119
array_values(array_slice($arCheck, 2)),
120
);
121
}
122
elseif
($lenValue == 12)
123
{
124
$arCheckArrays =
array
(
125
$arCheck,
126
array_values(array_slice($arCheck, 1)),
127
);
128
}
129
else
130
{
131
return
false
;
132
}
133
134
foreach
($arCheckArrays as $checkKey => $arCheck)
135
{
136
$checkSum = 0;
137
foreach
($arCheck as
$key
=> $num)
138
{
139
$checkSum += $num * intval($value[
$key
]);
140
}
141
142
$checkNum = 11 - $checkSum % 11;
143
144
if
($checkNum == 10 || $checkNum == 11) $checkNum = 0;
145
146
if
($checkNum != intval(mb_substr($value, -$checkKey - 1, 1)))
147
return
false
;
148
}
149
150
return
true
;
151
}
152
}
153
154
AddEventHandler
(
"form"
,
"onFormValidatorBuildList"
,
array
(
"CFormValidatorINN"
,
"GetDescription"
));
$arParams
$arParams
Определения
access_dialog.php:21
$APPLICATION
global $APPLICATION
Определения
include.php:80
CFormValidatorINN
Определения
val_inn.php:6
CFormValidatorINN\ToDB
static ToDB($arParams)
Определения
val_inn.php:36
CFormValidatorINN\GetSettings
static GetSettings()
Определения
val_inn.php:20
CFormValidatorINN\__checkINN
static __checkINN($value)
Определения
val_inn.php:111
CFormValidatorINN\DoValidate
static DoValidate($arParams, $arQuestion, $arAnswers, $arValues)
Определения
val_inn.php:50
CFormValidatorINN\FromDB
static FromDB($strParams)
Определения
val_inn.php:45
CFormValidatorINN\GetDescription
static GetDescription()
Определения
val_inn.php:7
$arValues
$arValues
Определения
component_props.php:25
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$res
$res
Определения
filter_act.php:7
AddEventHandler
AddEventHandler($FROM_MODULE_ID, $MESSAGE_ID, $CALLBACK, $SORT=100, $FULL_PATH=false)
Определения
tools.php:5165
IncludeModuleLangFile
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения
tools.php:3778
GetMessage
GetMessage($name, $aReplace=null)
Определения
tools.php:3397
elseif
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения
prolog_main_admin.php:393
$key
if(empty($signedUserToken)) $key
Определения
quickway.php:257
$i
$i
Определения
factura.php:643
bitrix
modules
form
validators
val_inn.php
Создано системой
1.14.0