- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/bizprocdocument.php
- Класс: BitrixDiskBizProcDocument
- Вызов: BizProcDocument::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'];
}
elseif (is_callable(array($userField['USER_TYPE']['CLASS_NAME'], 'GetList')))
{
$enumQuery = call_user_func_array(array($userField['USER_TYPE']['CLASS_NAME'], 'GetList'), array($userField));
while($enumRow = $enumQuery->getNext())
{
$editable[$enumRow['XML_ID']] = $enumRow['VALUE'];
}
}
}
}
$fieldTitle = trim($userField['EDIT_FORM_LABEL']) !== '' ? $userField['EDIT_FORM_LABEL'] : $userField['FIELD_NAME'];
if($userField['USER_TYPE']['USER_TYPE_ID'] === 'enumeration')
{
$fields[static::getFieldNameForUfField($userField)] = array(
'Name' => $fieldTitle . ' (text)',
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => false,
);
$fields[$userField['FIELD_NAME']] = array(
'Name' => $fieldTitle,
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => false,
);
}
else
{
$fields[static::getFieldNameForUfField($userField)] = array(
'Name' => $fieldTitle,
'Options' => $editable,
'Type' => $type,
'Filterable' => $userField['MULTIPLE'] != 'Y',
'Editable' => true,
'Multiple' => $userField['MULTIPLE'] == 'Y',
'Required' => $userField['MANDATORY'] == 'Y',
);
}
}
return $fields;
}