CCrmViewHelper::PrepareMultiFieldHtml

  1. Bitrix24 API (v. 23.675.0)
  2. crm
  3. CCrmViewHelper
  4. PrepareMultiFieldHtml
  • Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/crm_view_helper.php
  • Класс: \CCrmViewHelper
  • Вызов: CCrmViewHelper::PrepareMultiFieldHtml
static function PrepareMultiFieldHtml($typeName, $arParams, $arOptions = array())
{
	$value = isset($arParams['VALUE']) ? $arParams['VALUE'] : '';
	$valueUrl = $value;

	if($typeName === 'PHONE')
	{
		if($value === '')
		{
			return isset($arOptions['STUB']) ? $arOptions['STUB'] : '';
		}

		$valueUrl = \Bitrix\Main\PhoneNumber\Parser::getInstance()->parse($value)->format();
		$additionalHtml = '';
		$enableSip = is_array($arOptions) && isset($arOptions['ENABLE_SIP']) && (bool)$arOptions['ENABLE_SIP'];
		if($enableSip)
		{
			$sipParams =  isset($arOptions['SIP_PARAMS']) ? $arOptions['SIP_PARAMS'] : null;
			$additionalHtml = self::PrepareSipCallHtml($value, $sipParams);
		}

		$linkAttrs = CCrmCallToUrl::PrepareLinkAttributes($value, isset($arOptions['SIP_PARAMS']) ? $arOptions['SIP_PARAMS'] : array());
		$className = isset($arParams['CLASS_NAME']) ? $arParams['CLASS_NAME'] : 'crm-client-contacts-block-text-tel';

		return ''
			.htmlspecialcharsbx($valueUrl).''.$additionalHtml;
	}
	elseif($typeName === 'EMAIL')
	{
		if($value === '')
		{
			return isset($arOptions['STUB']) ? $arOptions['STUB'] : '';
		}

		$crmEmail = mb_strtolower(trim(COption::GetOptionString('crm', 'mail', '')));
		if($crmEmail !== '')
		{
			$valueUrl = $valueUrl.'?cc='.urlencode($crmEmail);
		}

		$className = isset($arParams['CLASS_NAME']) ? $arParams['CLASS_NAME'] : 'crm-client-contacts-block-text-tel';
		return ''
			.htmlspecialcharsbx($value).'';
	}
	elseif($typeName === 'WEB')
	{
		if($value === '')
		{
			return isset($arOptions['STUB']) ? $arOptions['STUB'] : '';
		}

		$valueUrl = preg_replace('/^\s*http(s)?:\/\//i', '', $value);
	}
	$valueTypeID = isset($arParams['VALUE_TYPE_ID']) ? $arParams['VALUE_TYPE_ID'] : '';
	$valueType = isset($arParams['VALUE_TYPE']) ? $arParams['VALUE_TYPE'] : null;

	if($typeName === 'IM')
	{
		$linkAttrs = OpenLineManager::prepareMultiFieldLinkAttributes($typeName, $valueTypeID, $value);
		if(is_array($linkAttrs))
		{
			$className = isset($arParams['CLASS_NAME']) ? $arParams['CLASS_NAME'] : 'crm-client-contacts-block-text-tel';
			return ''
				.htmlspecialcharsbx($linkAttrs['TEXT']).'';
		}
	}

	if(!$valueType && $valueTypeID !== '')
	{
		$arEntityTypes = CCrmFieldMulti::GetEntityTypes();
		$arValueTypes = isset($arEntityTypes[$typeName]) ? $arEntityTypes[$typeName] : array();
		$valueType = isset($arValueTypes[$valueTypeID]) ? $arValueTypes[$valueTypeID] : null;
	}

	if(!($valueType && !empty($valueType['TEMPLATE'])))
	{
		if($value === '')
		{
			return isset($arOptions['STUB']) ? $arOptions['STUB'] : '';
		}

		return htmlspecialcharsbx($value);
	}

	if($value === '')
	{
		return isset($arOptions['STUB']) ? $arOptions['STUB'] : '';
	}

	$template = $valueType['TEMPLATE'];
	//HACK: Crutch for https protocol support.
	if($typeName === 'WEB'
		&& ($valueTypeID === 'HOME' || $valueTypeID === 'WORK' || $valueTypeID = 'OTHER')
		&& preg_match('/^\s*https:\/\//i', $value) === 1)
	{
		$template = preg_replace('/http:\/\//i', 'https://', $template);
	}

	return str_replace(
		array(
			'#VALUE#',
			'#VALUE_URL#',
			'#VALUE_HTML#'
		),
		array(
			$value,
			htmlspecialcharsbx($valueUrl),
			htmlspecialcharsbx($value)
		),
		$template
	);
}

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