- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice_invoice.php
- Класс: \CCrmInvoiceRestService
- Вызов: CCrmInvoiceRestService::internalizeUserFields
static function internalizeUserFields(&$fields, $options)
{
if(!is_array($fields))
{
return;
}
if(!is_array($options))
{
$options = array();
}
$fieldsInfo = array();
$userType = new CCrmUserType($GLOBALS['USER_FIELD_MANAGER'], CCrmInvoice::$sUFEntityID);
$userType->PrepareFieldsInfo($fieldsInfo);
$ignoredAttrs = isset($options['IGNORED_ATTRS']) ? $options['IGNORED_ATTRS'] : array();
if(!in_array(CCrmFieldInfoAttr::Hidden, $ignoredAttrs, true))
{
$ignoredAttrs[] = CCrmFieldInfoAttr::Hidden;
}
if(!in_array(CCrmFieldInfoAttr::ReadOnly, $ignoredAttrs, true))
{
$ignoredAttrs[] = CCrmFieldInfoAttr::ReadOnly;
}
foreach($fields as $k => $v)
{
$info = isset($fieldsInfo[$k]) ? $fieldsInfo[$k] : null;
if(!$info)
{
continue;
}
$attrs = isset($info['ATTRIBUTES']) ? $info['ATTRIBUTES'] : array();
$isMultiple = in_array(CCrmFieldInfoAttr::Multiple, $attrs, true);
$ary = array_intersect($ignoredAttrs, $attrs);
if(!empty($ary))
{
unset($fields[$k]);
continue;
}
$fieldType = isset($info['TYPE']) ? $info['TYPE'] : '';
if($fieldType === 'date' || $fieldType === 'datetime')
{
$date = $fieldType === 'date' ? CRestUtil::unConvertDate($v) : CRestUtil::unConvertDateTime($v);
if($isMultiple)
{
if(!is_array($date))
{
$date = array($date);
}
$dates = array();
foreach($date as $item)
{
if(is_string($item))
{
$dates[] = $item;
}
}
if(!empty($dates))
{
$fields[$k] = $dates;
}
else
{
unset($fields[$k]);
}
}
elseif(is_string($date))
{
$fields[$k] = $date;
}
else
{
unset($fields[$k]);
}
}
elseif($fieldType === 'file')
{
self::tryInternalizeFileField($fields, $k, $isMultiple);
}
elseif($fieldType === 'webdav')
{
self::tryInternalizeWebDavElementField($fields, $k, $isMultiple);
}
elseif($fieldType === 'diskfile')
{
self::tryInternalizeDiskFileField($fields, $k, $isMultiple);
}
}
}