- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/bizprocdocumentcompatible.php
- Класс: BitrixDiskBizProcDocumentCompatible
- Вызов: BizProcDocumentCompatible::getUserTypeFields
static function getUserTypeFields($storageId)
{
$fields = array();
/** @var CAllUserTypeManager */
global $USER_FIELD_MANAGER;
foreach($USER_FIELD_MANAGER->getUserFields('DISK_FILE_' . $storageId, 0, LANGUAGE_ID) as $fieldName => $userField)
{
$editable = array();
if($userField['USER_TYPE']['USER_TYPE_ID'] == 'boolean')
{
$type = static::getPrefixForCustomType() . "boolean";
$editable = $userField['SETTINGS'];
}
else
{
if(in_array($userField['USER_TYPE']['USER_TYPE_ID'], array(
'string',
'double',
'boolean',
'integer',
'datetime',
'file',
)))
{
if($userField['USER_TYPE']['BASE_TYPE'] == 'enum')
{
$userField['USER_TYPE']['BASE_TYPE'] = 'select';
}
$type = $userField['USER_TYPE']['USER_TYPE_ID'];
if($type === 'datetime')
{
$userField['SETTINGS']['EDIT_IN_LIST'] = $userField['EDIT_IN_LIST'];
$editable = $userField['SETTINGS'];
}
}
else
{
$userTypeId = $userField['USER_TYPE']['USER_TYPE_ID'];
if($userTypeId == 'enumeration')
{
$type = 'select';
}
else
{
$type = static::getPrefixForCustomType() . $userTypeId;
}
$editable = array();
if('iblock_element' == $userTypeId || 'iblock_section' == $userTypeId)
{
$editable = $userField['SETTINGS'];
}
}
}
$fieldTitle = trim($userField['EDIT_FORM_LABEL']) !== '' ? $userField['EDIT_FORM_LABEL'] : $userField['FIELD_NAME'];
//this means uf converted from iblock property (webdav)
if(mb_strpos($userField['XML_ID'], 'PROPERTY_') === 0)
{
$fields[$userField['XML_ID']] = array(
'Name' => $fieldTitle,
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => $userField['MANDATORY'] == 'Y',
);
}
if($userField['USER_TYPE']['USER_TYPE_ID'] === 'enumeration')
{
$fields[$fieldName . '_PRINTABLE'] = array(
'Name' => $fieldTitle . ' (' . (isset($arOptions['PRINTABLE_SUFFIX']) ? $arOptions['PRINTABLE_SUFFIX'] : 'text') . ')',
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => false,
);
}
else
{
$fields[$fieldName] = array(
'Name' => $fieldTitle,
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => $userField['MANDATORY'] == 'Y',
);
}
}
return $fields;
}