CCrmInvoiceRestService::internalizeUserFields

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmInvoiceRestService
  4. internalizeUserFields
  • Модуль: 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);
		}
	}
}

Добавить комментарий