• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_main.php
  • Класс: CVoxImplantMain
  • Вызов: CVoxImplantMain::UpdateChatInfo
static function UpdateChatInfo($dialogId, array $additionalData)
{
	if(!CModule::IncludeModule('im'))
		return false;

	if (mb_substr($dialogId, 0, 4) == 'chat')
	{
		$chatId = intval(mb_substr($dialogId, 4));
		$fieldValue = $additionalData['CRM'].'|'.$additionalData['CRM_ENTITY_TYPE'].'|'.$additionalData['CRM_ENTITY_ID'];

		$chatFields = array(
			'ENTITY_DATA_1' => $fieldValue
		);

		if($additionalData['CRM'] == 'Y' && $additionalData['CRM_ENTITY_TYPE'] != '' && $additionalData['CRM_ENTITY_ID'] > 0)
		{
			$entityFields = CVoxImplantCrmHelper::getEntityFields($additionalData['CRM_ENTITY_TYPE'], $additionalData['CRM_ENTITY_ID']);
			if($entityFields)
			{
				$chatFields['TITLE'] = $entityFields['NAME'];
				$chatFields['AVATAR'] = (int)$entityFields['PHOTO'];
			}
		}

		$updateResult = IMModelChatTable::update($chatId, $chatFields)->isSuccess();

		if($updateResult)
		{
			$relationCursor = BitrixImModelRelationTable::getList(array(
				"select" => array("ID", "USER_ID", "EXTERNAL_AUTH_ID" => "USER.EXTERNAL_AUTH_ID"),
				"filter" => array(
					"=CHAT_ID" => $chatId
				),
			));
			while ($relation = $relationCursor->fetch())
			{
				if (
					BitrixImUser::getInstance($relation['USER_ID'])->isBot() ||
					BitrixImUser::getInstance($relation['USER_ID'])->isNetwork() ||
					BitrixImUser::getInstance($relation['USER_ID'])->isConnector()
				)
				{
					continue;
				}
				CIMContactList::CleanChatCache($relation['USER_ID']);
			}
		}

		return $updateResult;
	}
	return false;
}