• Модуль: landing
  • Путь к файлу: ~/bitrix/modules/landing/lib/chat/chat.php
  • Класс: BitrixLandingChatChat
  • Вызов: Chat::add
static function add($fields)
{
	if (array_key_exists('CHAT_ID', $fields))
	{
		unset($fields['CHAT_ID']);
	}
	if (array_key_exists('AVATAR', $fields))
	{
		$avatarId = self::getAvatarId($fields['AVATAR']);
	}
	else
	{
		$avatarId = 0;
	}

	// first create chat in th IM module
	if (
		isset($fields['TITLE']) &&
		BitrixMainLoader::includeModule('im')
	)
	{
		$userId = Manager::getUserId();
		$chat = new CIMChat(0);
		$chatId = $chat->add([
			'TITLE' => $fields['TITLE'],
			'USERS' => [$userId],
			'AVATAR_ID' => $avatarId,
			'OWNER_ID' => $userId,
			'ENTITY_TYPE' => 'LANDING'
		]);
		if ($chatId)
		{
			// welcome message
			CIMChat::addMessage([
				'FROM_USER_ID' => $userId,
				'SYSTEM' => 'Y',
				'TO_CHAT_ID' => $chatId,
				'MESSAGE' => Loc::getMessage('LANDING_CHAT_WELCOME_CREATE_MESSAGE'),
			]);
			$fields['CHAT_ID'] = $chatId;
			// and create internal chat
			$result = parent::add($fields);
			if ($result->isSuccess())
			{
				CIMChat::SetChatParams($chatId, [
					'ENTITY_ID' => $result->getId()
				]);
			}
			return $result;
		}
	}

	return parent::add($fields);
}