1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
val_inn.php
См. документацию.
1<?php
2
4
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 }
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
154AddEventHandler("form", "onFormValidatorBuildList", array("CFormValidatorINN", "GetDescription"));
$arParams
Определения access_dialog.php:21
global $APPLICATION
Определения include.php:80
Определения val_inn.php:6
static ToDB($arParams)
Определения val_inn.php:36
static GetSettings()
Определения val_inn.php:20
static __checkINN($value)
Определения val_inn.php:111
static DoValidate($arParams, $arQuestion, $arAnswers, $arValues)
Определения val_inn.php:50
static FromDB($strParams)
Определения val_inn.php:45
static GetDescription()
Определения val_inn.php:7
$arValues
Определения component_props.php:25
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
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
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
$i
Определения factura.php:643