1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
stringtype.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Main\UserField\Types;
4
5
use Bitrix\Main\Localization\Loc;
6
use Bitrix\Main\Text\HtmlFilter;
7
use CUserTypeManager;
8
9
Loc::loadMessages(__FILE__);
10
15
class
StringType
extends
BaseType
16
{
17
public
const
18
USER_TYPE_ID
=
'string'
,
19
RENDER_COMPONENT
=
'bitrix:main.field.string'
;
20
21
public
static
function
getDescription
():
array
22
{
23
return
[
24
'DESCRIPTION'
=> Loc::getMessage(
'USER_TYPE_STRING_DESCRIPTION'
),
25
'BASE_TYPE'
=> CUserTypeManager::BASE_TYPE_STRING,
26
];
27
}
28
39
public
static
function
getDbColumnType
(): string
40
{
41
$connection
=
\Bitrix\Main\Application::getConnection
();
42
$helper =
$connection
->getSqlHelper();
43
return
$helper->getColumnTypeByField(
new
\
Bitrix
\
Main
\
ORM
\
Fields
\
TextField
(
'x'
));
44
}
45
55
public
static
function
prepareSettings
(
array
$userField):
array
56
{
57
$size = (int)($userField[
'SETTINGS'
][
'SIZE'
] ?? 0);
58
$rows
= (int)($userField[
'SETTINGS'
][
'ROWS'
] ?? 0);
59
$min = (int)($userField[
'SETTINGS'
][
'MIN_LENGTH'
] ?? 0);
60
$max
= (int)($userField[
'SETTINGS'
][
'MAX_LENGTH'
] ?? 0);
61
62
$regExp =
''
;
63
if
(
64
isset($userField[
'SETTINGS'
])
65
&& is_array($userField[
'SETTINGS'
])
66
&& !empty($userField[
'SETTINGS'
][
'REGEXP'
])
67
//Checking the correctness of the regular expression entered by the user
68
&& @preg_match($userField[
'SETTINGS'
][
'REGEXP'
],
null
) !==
false
69
)
70
{
71
$regExp = $userField[
'SETTINGS'
][
'REGEXP'
];
72
}
73
74
return
[
75
'SIZE'
=> ($size <= 1 ? 20 : ($size > 255 ? 225 : $size)),
76
'ROWS'
=> (
$rows
<= 1 ? 1 : (
$rows
> 50 ? 50 :
$rows
)),
77
'REGEXP'
=> $regExp,
78
'MIN_LENGTH'
=> $min,
79
'MAX_LENGTH'
=>
$max
,
80
'DEFAULT_VALUE'
=> isset($userField[
'SETTINGS'
]) && is_array($userField[
'SETTINGS'
]) ? ($userField[
'SETTINGS'
][
'DEFAULT_VALUE'
] ??
''
) :
''
,
81
];
82
}
83
89
public
static
function
getFilterData
(?
array
$userField,
array
$additionalSettings):
array
90
{
91
return
[
92
'id'
=> $additionalSettings[
'ID'
],
93
'name'
=> $additionalSettings[
'NAME'
],
94
'filterable'
=>
''
95
];
96
}
97
106
public
static
function
checkFields
(
array
$userField, $value):
array
107
{
108
$fieldName = HtmlFilter::encode(
109
$userField[
'EDIT_FORM_LABEL'
] <>
''
110
? $userField[
'EDIT_FORM_LABEL'
] : $userField[
'FIELD_NAME'
]
111
);
112
113
if
(is_array($value))
114
{
115
return
[
116
'id'
=> $userField[
'FIELD_NAME'
],
117
'text'
=> Loc::getMessage(
'USER_TYPE_STRING_VALUE_IS_MULTIPLE'
,
118
[
119
'#FIELD_NAME#'
=> $fieldName,
120
]
121
),
122
];
123
}
124
125
$msg = [];
126
127
if
($value !=
''
&& mb_strlen($value) < $userField[
'SETTINGS'
][
'MIN_LENGTH'
])
128
{
129
$msg[] = [
130
'id'
=> $userField[
'FIELD_NAME'
],
131
'text'
=> Loc::GetMessage(
'USER_TYPE_STRING_MIN_LEGTH_ERROR'
,
132
[
133
'#FIELD_NAME#'
=> $fieldName,
134
'#MIN_LENGTH#'
=> $userField[
'SETTINGS'
][
'MIN_LENGTH'
]
135
]
136
)
137
];
138
}
139
if
(
140
$userField[
'SETTINGS'
][
'MAX_LENGTH'
] > 0
141
&& mb_strlen($value) > $userField[
'SETTINGS'
][
'MAX_LENGTH'
]
142
)
143
{
144
$msg[] = [
145
'id'
=> $userField[
'FIELD_NAME'
],
146
'text'
=> Loc::GetMessage(
'USER_TYPE_STRING_MAX_LEGTH_ERROR'
,
147
[
148
'#FIELD_NAME#'
=> $fieldName,
149
'#MAX_LENGTH#'
=> $userField[
'SETTINGS'
][
'MAX_LENGTH'
]
150
]
151
),
152
];
153
}
154
155
if
(
156
!empty($userField[
'SETTINGS'
][
'REGEXP'
])
157
&& (
string
) $value !==
''
158
&& !preg_match($userField[
'SETTINGS'
][
'REGEXP'
] .
'u'
, $value)
159
)
160
{
161
$msg[] = [
162
'id'
=> $userField[
'FIELD_NAME'
],
163
'text'
=> ($userField[
'ERROR_MESSAGE'
] !=
''
?
164
$userField[
'ERROR_MESSAGE'
] :
165
Loc::GetMessage(
'USER_TYPE_STRING_REGEXP_ERROR'
,
166
[
167
'#FIELD_NAME#'
=> $fieldName
168
]
169
)
170
),
171
];
172
}
173
174
return
$msg;
175
}
176
185
public
static
function
onSearchIndex
(
array
$userField): ?string
186
{
187
if
(is_array($userField[
'VALUE'
]))
188
{
189
$result
= implode(
'\r\n'
, $userField[
'VALUE'
]);
190
}
191
else
192
{
193
$result
= $userField[
'VALUE'
];
194
}
195
196
return
$result
;
197
}
198
199
//<editor-fold desc="Events and methods..." defaultstate="collapsed">
211
/*
212
public static function onBeforeGetPublicView($event)
213
{
214
$params = $event->getParameters();
215
$arUserField = &$params[0];
216
$arAdditionalParameters = &$params[1];
217
if ($arUserField['USER_TYPE_ID'] == 'string')
218
{
219
$arUserField['VIEW_COMPONENT_NAME'] = 'my:system.field.view';
220
$arUserField['VIEW_COMPONENT_TEMPLATE'] = 'string';
221
}
222
}
223
*/
224
235
/*
236
public static function onGetPublicView($event)
237
{
238
$params = $event->getParameters();
239
$arUserField = $params[0];
240
$arAdditionalParameters = $params[1];
241
if ($arUserField['USER_TYPE_ID'] == 'string')
242
{
243
$html = 'demo string';
244
return new \Bitrix\Main\EventResult(\Bitrix\Main\EventResult::SUCCESS, $html);
245
}
246
}
247
*/
248
259
/*
260
public static function onAfterGetPublicView($event)
261
{
262
$params = $event->getParameters();
263
$arUserField = $params[0];
264
$arAdditionalParameters = $params[1];
265
$html = &$params[2];
266
if ($arUserField['USER_TYPE_ID'] == 'string')
267
{
268
$html .= '!';
269
}
270
}
271
*/
272
281
/* static function OnBeforeSave($arUserField, $value)
282
{
283
if(strlen($value)>0)
284
return ''.round(doubleval($value), $arUserField['SETTINGS']['PRECISION']);
285
}*/
286
//</editor-fold>
287
}
$connection
$connection
Определения
actionsdefinitions.php:38
Bitrix\Main\Application\getConnection
static getConnection($name="")
Определения
application.php:638
Bitrix\Main\ORM\Fields\TextField
Определения
textfield.php:20
Bitrix\Main\UserField\Types\BaseType
Определения
basetype.php:6
Bitrix\Main\UserField\Types\StringType
Определения
stringtype.php:16
Bitrix\Main\UserField\Types\StringType\USER_TYPE_ID
const USER_TYPE_ID
Определения
stringtype.php:18
Bitrix\Main\UserField\Types\StringType\getFilterData
static getFilterData(?array $userField, array $additionalSettings)
Определения
stringtype.php:89
Bitrix\Main\UserField\Types\StringType\getDescription
static getDescription()
Определения
stringtype.php:21
Bitrix\Main\UserField\Types\StringType\onSearchIndex
static onSearchIndex(array $userField)
Определения
stringtype.php:185
Bitrix\Main\UserField\Types\StringType\RENDER_COMPONENT
const RENDER_COMPONENT
Определения
stringtype.php:19
Bitrix\Main\UserField\Types\StringType\getDbColumnType
static getDbColumnType()
Определения
stringtype.php:39
Bitrix\Main\UserField\Types\StringType\checkFields
static checkFields(array $userField, $value)
Определения
stringtype.php:106
Bitrix\Main\UserField\Types\StringType\prepareSettings
static prepareSettings(array $userField)
Определения
stringtype.php:55
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$result
$result
Определения
get_property_values.php:14
Bitrix\Main\ORM\Fields
Определения
arrayfield.php:9
Bitrix\Main\ORM
Bitrix\Main
Bitrix
$rows
$rows
Определения
options.php:264
$max
$max
Определения
template_copy.php:262
bitrix
modules
main
lib
userfield
types
stringtype.php
Создано системой
1.14.0