1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
stringtype.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\UserField\Types;
4
5use Bitrix\Main\Localization\Loc;
6use Bitrix\Main\Text\HtmlFilter;
7use CUserTypeManager;
8
9Loc::loadMessages(__FILE__);
10
15class 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 {
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
Определения actionsdefinitions.php:38
static getConnection($name="")
Определения application.php:638
static getFilterData(?array $userField, array $additionalSettings)
Определения stringtype.php:89
static onSearchIndex(array $userField)
Определения stringtype.php:185
static checkFields(array $userField, $value)
Определения stringtype.php:106
static prepareSettings(array $userField)
Определения stringtype.php:55
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$rows
Определения options.php:264
$max
Определения template_copy.php:262