• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/lib/helper/recipient.php
  • Класс: BitrixMailHelperRecipient
  • Вызов: Recipient::loadCrmMailContacts
static function loadCrmMailContacts($filter = [], $limit = 20)
{
	global $APPLICATION;

	$result = array();

	if (MainLoader::includeModule('crm'))
	{
		$mailContacts = BitrixMainUserTable::getList(array(
			'select' => array(
				'ID',
				'NAME',
				'LAST_NAME',
				'SECOND_NAME',
				'EMAIL',
				'PERSONAL_PHOTO',
			),
			'filter' => array_merge(
				array(
					'=ACTIVE' => 'Y',
					'=EXTERNAL_AUTH_ID' => 'email',
				),
				$filter
			),
			'order' => array(
				'LAST_NAME' => 'ASC',
			),
			'limit' => $limit,
		));

		$contactAvatars = array();
		while ($mailContact = $mailContacts->fetch())
		{
			$email = $mailContact['EMAIL'];
			if (empty($email))
			{
				continue;
			}

			$crmCommunications = CSocNetLogDestination::searchCrmEntities(array(
				'SEARCH' => $email,
				'ENTITIES' => array('CONTACT'),
			));
			foreach ($crmCommunications as $communication)
			{
				$email = $communication['email'];

				if ($contactAvatars[$email] === null)
				{
					ob_start();
					$APPLICATION->includeComponent('bitrix:mail.contact.avatar', '',
						[
							'mailContact' => array(
								'FILE_ID' => $mailContact['PERSONAL_PHOTO'],
								'name' => CUser::formatName(CSite::getNameFormat(), $mailContact),
								'email' => $email,
							),
						]);
					$contactAvatars[$email] = ob_get_clean();
					$communication['iconCustom'] = $contactAvatars[$email];
				}

				$id = static::buildUniqueEmailCode($email);
				$communication['id'] = $id;
				$result[$id] = $communication;
			}
		}
	}

	return $result;
}