• Модуль: voximplant
  • Путь к файлу: ~/bitrix/modules/voximplant/classes/general/vi_main.php
  • Класс: CVoxImplantMain
  • Вызов: CVoxImplantMain::GetDialogInfo
public function	GetDialogInfo($phone, $chatTitle = '', $getPhoto = true)
{
	$phoneNormalize = CVoxImplantPhone::Normalize($phone);
	if (!$phoneNormalize)
	{
		$phoneNormalize = preg_replace("/[^0-9#*]/i", "", $phone);
	}
	$phone = $phoneNormalize;

	$hrPhoto = [];

	$openChat = true;
	$result = VIPhoneTable::getList([
		'select' => ['USER_ID', 'PHONE_MNEMONIC'],
		'filter' => [
			'=PHONE_NUMBER' => $phone,
			'=USER.ACTIVE' => 'Y',
			'=USER.IS_REAL_USER' => 'Y'
		]
	]);

	$userId = false;
	while ($row = $result->fetch())
	{
		if (!$userId && $row['PHONE_MNEMONIC'] != 'WORK_PHONE' )
		{
			$userId = $row['USER_ID'];
			$openChat = false;
		}
		else if (!$userId && $row['PHONE_MNEMONIC'] == 'WORK_PHONE' )
		{
			$openChat = true;
		}
	}

	if ($userId == $this->userId)
	{
		$openChat = true;
	}

	$dialogId = 0;
	$isUnified = false;
	if (!CModule::IncludeModule('im'))
	{
		return false;
	}

	if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_NONE)
	{
	}
	else if ($openChat)
	{
		$entityId = $phone;
		if (CVoxImplantConfig::GetChatAction() == CVoxImplantConfig::INTERFACE_CHAT_APPEND)
		{
			$entityId = 'UNIFY_CALL_CHAT';
			$chatTitle = GetMessage('VI_CALL_CHAT_UNIFY');
			$isUnified = true;
		}
		$result = IMModelChatTable::getList(Array(
			'select' => Array('ID', 'AVATAR'),
			'filter' => Array('=ENTITY_TYPE' => 'CALL', '=ENTITY_ID' => $entityId, '=AUTHOR_ID' => $this->userId)
		));

		if ($row = $result->fetch())
		{
			$dialogId = 'chat'.$row['ID'];
			$avatarId = $row['AVATAR'];
		}
		else
		{
			$CIMChat = new CIMChat($this->userId);
			$chatId = $CIMChat->Add(Array(
				'TITLE' => $chatTitle != ''? $chatTitle: BitrixMainPhoneNumberParser::getInstance()->parse($phone)->format(),
				'USERS' => false,
				'CALL_NUMBER' => $entityId == 'UNIFY_CALL_CHAT'? '': $entityId,
				'ENTITY_TYPE' => 'CALL',
				'ENTITY_ID' => $entityId,
			));
			if ($chatId)
			{
				$dialogId = 'chat'.$chatId;
				$avatarId = $CIMChat->lastAvatarId;
			}
		}
		if ($getPhoto && intval($avatarId) > 0)
		{
			$arPhotoHrTmp = CFile::ResizeImageGet(
				$avatarId,
				array('width' => 200, 'height' => 200),
				BX_RESIZE_IMAGE_EXACT,
				false,
				false,
				true
			);
			$hrPhoto[$dialogId] = empty($arPhotoHrTmp['src'])? '/bitrix/js/im/images/hidef-avatar-v2.png': $arPhotoHrTmp['src'];
		}
	}
	else if ($userId)
	{
		if ($getPhoto)
		{
			$userData = CIMContactList::GetUserData(Array('ID' => $userId, 'DEPARTMENT' => 'N', 'HR_PHOTO' => 'Y'));
			$hrPhoto = $userData['hrphoto'];
		}
		$dialogId = $userId;
	}


	if (!$dialogId)
	{
		$this->error = new CVoxImplantError(__METHOD__, 'ERROR_NEW_CHAT', GetMessage('VI_ERROR_NEW_CHAT'));
		return false;
	}

	//foreach(GetModuleEvents("voximplant", "OnGetDialogInfo", true) as $arEvent)
	//	ExecuteModuleEventEx($arEvent, array('USER_ID' => $this->userId, 'DIALOG_ID' => $dialogId));

	return Array(
		'DIALOG_ID' => $dialogId,
		'HR_PHOTO' => $hrPhoto,
		'UNIFIED' => $isUnified,
	);
}