• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/bizproc/fieldtype/multifieldbase.php
  • Класс: Bitrix\Crm\Integration\BizProc\FieldType\MultiFieldBase
  • Вызов: MultiFieldBase::convertTo
static function convertTo(FieldType $fieldType, $value, $toTypeClass)
{
	if (is_array($value) && $fieldType->getTypeClass() === $toTypeClass)
	{
		$newValue = [];

		$type = mb_strtoupper((string)$fieldType->getType());
		if (is_string($type) && isset($value[$type]) && is_array($value[$type]))
		{
			$value = $value[$type];
		}

		if (isset($value['VALUE'], $value['VALUE_TYPE']))
		{
			$value = [$value];
		}

		foreach ($value as $key => $v)
		{
			if (is_array($v) && isset($v['VALUE'], $v['VALUE_TYPE']))
			{
				$newValue[$key] = [
					'VALUE' => $v['VALUE'],
					'VALUE_TYPE' => $v['VALUE_TYPE'],
				];
			}
		}

		return [$type => $newValue];
	}

	if (is_array($value))
	{
		if (isset($value['VALUE']))
		{
			return BaseType\StringType::convertTo($fieldType, $value['VALUE'], $toTypeClass);
		}
		else
		{
			$converted = [];
			foreach ($value as $k => $v)
			{
				if (is_array($v))
				{
					$v = isset($v['VALUE']) ? $v['VALUE'] : implode(', ', \CBPHelper::MakeArrayFlat($v));
				}
				$converted[] = BaseType\StringType::convertTo($fieldType, $v, $toTypeClass);
			}
			return $converted;
		}
	}

	return BaseType\StringType::convertTo($fieldType, $value, $toTypeClass);
}