3namespace Bitrix\Main\UserField\Types;
5use Bitrix\Main\Localization\Loc;
6use Bitrix\Main\Text\HtmlFilter;
10use Bitrix\Main\Context;
12Loc::loadMessages(__FILE__);
33 'DESCRIPTION' => Loc::getMessage(
'USER_TYPE_ENUM_DESCRIPTION'),
34 'BASE_TYPE' => CUserTypeManager::BASE_TYPE_ENUM,
40 static::getEnumList($userField, $additionalParameters);
41 return parent::renderField($userField, $additionalParameters);
46 static::getEnumList($userField, $additionalParameters);
47 return parent::renderView($userField, $additionalParameters);
52 static::getEnumList($userField, $additionalParameters);
53 return parent::renderEdit($userField, $additionalParameters);
58 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
64 while ($item = $enum->GetNext())
66 $items[$item[
'ID']] = $item;
68 $additionalParameters[
'items'] =
$items;
70 return parent::renderEditForm($userField, $additionalParameters);
75 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
81 while ($item = $enum->GetNext())
83 $items[$item[
'ID']] = $item[
'VALUE'];
85 $additionalParameters[
'items'] =
$items;
86 return parent::renderFilter($userField, $additionalParameters);
93 $emptyCaption =
' ';
95 $value = (int)($additionalParameters[
'VALUE'] ?? 0);
96 $fieldId = (int)$userField[
'ID'];
98 if (!isset($cache[$fieldId][$value]))
100 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
103 $additionalParameters[
'VALUE'] = $emptyCaption;
104 return parent::renderAdminListView($userField, $additionalParameters);
106 while ($item = $enum->Fetch())
108 $cache[$fieldId][(int)$item[
'ID']] = $item[
'VALUE'];
111 if (!isset($cache[$fieldId][$value]))
113 $cache[$fieldId][$value] = $emptyCaption;
116 $additionalParameters[
'VALUE'] = $cache[$fieldId][$value];
117 return parent::renderAdminListView($userField, $additionalParameters);
122 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
126 while ($item = $enum->GetNext())
128 $values[$item[
'ID']] = $item[
'VALUE'];
131 $additionalParameters[
'enumItems'] = $values;
133 return parent::renderAdminListEdit($userField, $additionalParameters);
152 $height = (int)($userField[
'SETTINGS'][
'LIST_HEIGHT'] ?? 0);
153 $display = $userField[
'SETTINGS'][
'DISPLAY'] ??
'';
154 $caption_no_value = trim($userField[
'SETTINGS'][
'CAPTION_NO_VALUE'] ??
'');
155 $show_no_value = (isset($userField[
'SETTINGS'][
'SHOW_NO_VALUE']) && $userField[
'SETTINGS'][
'SHOW_NO_VALUE'] ===
'N' ?
'N' :
'Y');
158 self::DISPLAY_CHECKBOX,
160 self::DISPLAY_DIALOG,
163 if (!in_array($display, $displays,
true))
165 $display = self::DISPLAY_LIST;
169 'DISPLAY' => $display,
170 'LIST_HEIGHT' => ($height < 1 ? 1 : $height),
171 'CAPTION_NO_VALUE' => $caption_no_value,
172 'SHOW_NO_VALUE' => $show_no_value,
194 if (is_array($userField[
'VALUE']))
196 $val = $userField[
'VALUE'];
200 $val = [$userField[
'VALUE']];
203 $val = array_filter(
$val,
'strlen');
206 $ob =
new CUserFieldEnum();
207 $rs = $ob->GetList([], [
208 'USER_FIELD_ID' => $userField[
'ID'],
212 while (
$ar =
$rs->Fetch())
228 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
232 while ($item = $enum->GetNext())
234 $items[$item[
'ID']] = $item[
'VALUE'];
238 'id' => $additionalParameters[
'ID'],
239 'name' => $additionalParameters[
'NAME'],
242 'params' => [
'multiple' =>
'Y'],
253 $userFieldEnum =
new CUserFieldEnum();
254 return $userFieldEnum->GetList([], [
'USER_FIELD_ID' => $userField[
'ID'] ??
null]);
264 (!isset($userField[
'MANDATORY']) || $userField[
'MANDATORY'] !==
'Y')
266 (!isset($userField[
'SETTINGS'][
'SHOW_NO_VALUE']) || $userField[
'SETTINGS'][
'SHOW_NO_VALUE'] !==
'N')
269 isset($additionalParameters[
'SHOW_NO_VALUE'])
271 $additionalParameters[
'SHOW_NO_VALUE'] === true
279 (!isset($userField[
'SETTINGS'][
'DISPLAY']) || $userField[
'SETTINGS'][
'DISPLAY'] !==
'CHECKBOX')
281 (!isset($userField[
'MULTIPLE']) || $userField[
'MULTIPLE'] !==
'Y')
285 $enum = [
null => static::getEmptyCaption($userField)];
286 $userField[
'USER_TYPE'][
'FIELDS'] = $enum;
287 $userField[
'USER_TYPE'][
'~FIELDS'] = $enum;
290 $enumList = static::getList($userField);
292 while ($item = $enumList->Fetch())
294 $userField[
'USER_TYPE'][
'FIELDS'][$item[
'ID']] = HtmlFilter::encode($item[
'VALUE']);
295 $userField[
'USER_TYPE'][
'~FIELDS'][$item[
'ID']] = $item[
'VALUE'];
306 $message = ($userField[
'SETTINGS'][
'CAPTION_NO_VALUE'] ??
'');
309 ? HtmlFilter::encode($userField[
'SETTINGS'][
'CAPTION_NO_VALUE'])
310 : Loc::getMessage(
'USER_TYPE_ENUM_NO_VALUE')
322 foreach ($userFields as $field)
324 $ids[] = $field[
'ID'];
326 $userFieldEnum =
new CUserFieldEnum();
327 return $userFieldEnum->GetList(
328 [
'USER_FIELD_ID' =>
'ASC',
'SORT' =>
'ASC',
'ID' =>
'ASC'],
329 [
'USER_FIELD_ID' => $ids]
341 $enum = call_user_func([$userField[
'USER_TYPE'][
'CLASS_NAME'],
'getlist'], $userField);
347 while ($item = $enum->GetNext())
349 $result[] = [
'NAME' => $item[
'VALUE'],
'VALUE' => $item[
'ID']];
362 return static::renderAdminListEdit($userField, $additionalParameters);
367 if (!isset($userField[
'ENUM']))
369 $userField[
'ENUM'] = [];
370 $enumValuesManager =
new CUserFieldEnum();
371 $dbRes = $enumValuesManager->getList(
374 'USER_FIELD_ID' => $userField[
'ID'],
379 while ($enumValue =
$dbRes->fetch())
381 $userField[
'ENUM'][] = [
382 'ID' => $enumValue[
'ID'],
383 'VALUE' => $enumValue[
'VALUE'],
384 'DEF' => $enumValue[
'DEF'],
385 'SORT' => $enumValue[
'SORT'],
386 'XML_ID' => $enumValue[
'XML_ID'],
391 $userField[
'ENTITY_VALUE_ID'] = 0;
392 return static::getFieldValue($userField, $additionalParameters);
397 return ($userField[
'MULTIPLE'] !==
'Y' && is_array($value)) ? array_shift($value) : $value;
402 $bVarsFromForm = ($additionalParameters[
'bVarsFromForm'] ??
false);
406 isset($userField[
'ENTITY_VALUE_ID'], $userField[
'ENUM'])
407 && $userField[
'ENTITY_VALUE_ID'] <= 0
410 $value = ($userField[
'MULTIPLE'] ===
'Y' ? [] :
null);
411 foreach ($userField[
'ENUM'] as $enum)
413 if ($enum[
'DEF'] ===
'Y')
415 if ($userField[
'MULTIPLE'] ===
'Y')
417 $value[] = $enum[
'ID'];
421 $value = $enum[
'ID'];
429 $value = $userField[
'VALUE'] ??
null;
432 elseif (isset($additionalParameters[
'VALUE']))
434 $value = $additionalParameters[
'VALUE'];
438 $value = Context::getCurrent()->getRequest()->get($userField[
'FIELD_NAME']);
static getConnection($name="")
static renderAdminListEdit(array $userField, ?array $additionalParameters)
static renderEdit(array $userField, ?array $additionalParameters=[])
static getDefaultValue(array $userField, array $additionalParameters=[])
static getFilterData(array $userField, array $additionalParameters)
static renderEditForm(array $userField, ?array $additionalParameters)
static getListMultiple(array $userFields)
static getEnumList(array &$userField, array $additionalParameters=[])
static getList(array $userField)
static renderField(array $userField, ?array $additionalParameters=[])
static onBeforeSave($userField, $value)
static renderView(array $userField, ?array $additionalParameters=[])
static onSearchIndex(array $userField)
static getFieldValue(array $userField, array $additionalParameters=[])
static checkFields(array $userField, $value)
static renderFilter(array $userField, ?array $additionalParameters)
static getEmptyCaption(array $userField)
static prepareSettings(array $userField)
static renderAdminListView(array $userField, ?array $additionalParameters)
static getGroupActionData(array $userField, ?array $additionalParameters)
static getAdminListEditHtmlMulty(array $userField, ?array $additionalParameters)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)