• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/userfield/datamodifiers/element.php
  • Класс: Bitrix\Crm\UserField\DataModifiers\Element
  • Вызов: Element::setContactElements
static function setContactElements(array &$result, array $params, array $settings, array $selected): void
{
	if(
		$settings['CONTACT'] === 'Y'
		&&
		!empty($selected['CONTACT'])
	)
	{
		$hasNameFormatter = method_exists('CCrmContact', 'PrepareFormattedName');
		$contacts = CCrmContact::GetListEx(
			['ID' => 'DESC'],
			['=ID' => $selected['CONTACT']],
			false,
			false,
			$hasNameFormatter
				? ['ID', 'HONORIFIC', 'NAME', 'SECOND_NAME', 'LAST_NAME', 'COMPANY_TITLE', 'PHOTO']
				: ['ID', 'FULL_NAME', 'COMPANY_TITLE', 'PHOTO']
		);

		$ar = [];
		while($contact = $contacts->Fetch())
		{
			$imageUrl = '';

			if(isset($contact['PHOTO']) && $contact['PHOTO'] > 0)
			{
				$image = CFile::ResizeImageGet(
					$contact['PHOTO'],
					['width' => 25, 'height' => 25],
					BX_RESIZE_IMAGE_EXACT
				);
				if(is_array($image) && isset($image['src']))
				{
					$imageUrl = $image['src'];
				}
			}

			$contact['SID'] = ($result['PREFIX'] === 'Y' ? 'C_' . $contact['ID'] : $contact['ID']);

			$isSelected = self::getIsSelectedValue($result, $params, $contact);
			self::removeItemFromResultList($result, $params, $contact);

			if($hasNameFormatter)
			{
				$title = CCrmContact::PrepareFormattedName(
					[
						'HONORIFIC' => ($contact['HONORIFIC'] ?? ''),
						'NAME' => ($contact['NAME'] ?? ''),
						'SECOND_NAME' => ($contact['SECOND_NAME'] ?? ''),
						'LAST_NAME' => ($contact['LAST_NAME'] ?? '')
					]
				);
			}
			else
			{
				$title = ($contact['FULL_NAME'] ?? '');
			}

			$ar[] = [
				'title' => $title,
				'desc' => (empty($contact['COMPANY_TITLE']) ? '' : $contact['COMPANY_TITLE']),
				'id' => $contact['SID'],
				'url' => CComponentEngine::MakePathFromTemplate(
					COption::GetOptionString('crm', 'path_to_contact_show'),
					['contact_id' => $contact['ID']]
				),
				'image' => $imageUrl,
				'type' => 'contact',
				'selected' => $isSelected
			];
		}
		$result['ELEMENT'] = array_merge($ar, $result['ELEMENT']);
	}
}