- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/classes/general/usertypemanager.php
- Класс: CUserTypeManager
- Вызов: CUserTypeManager::getEntityField
public function getEntityField($arUserField, $fieldName = null, $fieldParameters = array())
{
if(empty($fieldName))
{
$fieldName = $arUserField['FIELD_NAME'];
}
if(is_callable(array($arUserField['USER_TYPE']['CLASS_NAME'], 'getEntityField')))
{
$field = call_user_func(array($arUserField['USER_TYPE']['CLASS_NAME'], 'getEntityField'), $fieldName, $fieldParameters);
}
elseif($arUserField['USER_TYPE']['USER_TYPE_ID'] == 'date')
{
$field = new EntityDateField($fieldName, $fieldParameters);
}
else
{
switch($arUserField['USER_TYPE']['BASE_TYPE'])
{
case 'int':
case 'enum':
case 'file':
$field = (new EntityIntegerField($fieldName, $fieldParameters))
->configureNullable();
break;
case 'double':
$field = (new EntityFloatField($fieldName, $fieldParameters))
->configureNullable();
break;
case 'string':
$field = (new EntityStringField($fieldName, $fieldParameters))
->configureNullable();
break;
case 'datetime':
$field = (new EntityDatetimeField($fieldName, $fieldParameters))
->configureNullable()
->configureUseTimezone(isset($arUserField['SETTINGS']['USE_TIMEZONE']) && $arUserField['SETTINGS']['USE_TIMEZONE'] == 'Y');
break;
default:
throw new BitrixMainArgumentException(sprintf(
'Unknown userfield base type `%s`', $arUserField["USER_TYPE"]['BASE_TYPE']
));
}
}
$ufHandlerClass = $arUserField['USER_TYPE']['CLASS_NAME'];
if (is_subclass_of($ufHandlerClass, BaseType::class))
{
$defaultValue = $ufHandlerClass::getDefaultValue($arUserField);
$field->configureDefaultValue($defaultValue);
}
return $field;
}