• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/textareaicon.php
  • Класс: BitrixImTextareaIcon
  • Вызов: TextareaIcon::addMessage
static function addMessage(array $access, array $messageFields)
{
	$iconId = intval($access['ICON_ID']);
	$moduleId = isset($access['MODULE_ID'])? $access['MODULE_ID']: '';
	$appId = isset($access['APP_ID'])? $access['APP_ID']: '';

	if ($iconId <= 0)
		return false;

	$icons = self::getListCache();
	if (!isset($icons[$iconId]))
		return false;

	if (strlen($moduleId) > 0 && $icons[$iconId]['MODULE_ID'] != $moduleId)
		return false;

	if (strlen($appId) > 0 && $icons[$iconId]['APP_ID'] != $appId)
		return false;

	$botId = intval($icons[$iconId]['BOT_ID']);
	
	if (self::isChat($messageFields['DIALOG_ID']))
	{
		$relations = CIMChat::GetRelationById(substr($messageFields['DIALOG_ID'], 4));
	}
	else
	{
		$userId = intval($messageFields['DIALOG_ID']);
		if (!$userId || $botId == $userId)
		{
			return false;
		}
		$relations = CIMChat::GetPrivateRelation($botId, $userId);
	}
	
	if ($botId && !BotToken::isActive($botId, $messageFields['DIALOG_ID']))
	{
		return false;
	}
	
	$messageFields['ATTACH'] = $messageFields['ATTACH']? $messageFields['ATTACH']: null;
	$messageFields['KEYBOARD'] = $messageFields['KEYBOARD']? $messageFields['KEYBOARD']: null;

	$fromUserId = isset($messageFields['FROM_USER_ID'])? $messageFields['FROM_USER_ID']: $botId;
	
	if (self::isChat($messageFields['DIALOG_ID']))
	{
		$chatId = intval(substr($messageFields['DIALOG_ID'], 4));
		if ($chatId <= 0)
			return false;

		if (isset($relations[$fromUserId]) && $messageFields['SYSTEM'] != 'Y')
		{
			$ar = Array(
				"FROM_USER_ID" => $fromUserId,
				"TO_CHAT_ID" => $chatId,
				"ATTACH" => $messageFields['ATTACH'],
				"KEYBOARD" => $messageFields['KEYBOARD'],
			);
			if (isset($messageFields['MESSAGE']))
			{
				$ar['MESSAGE'] = $messageFields['MESSAGE'];
			}
		}
		else
		{
			$ar = Array(
				"FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
				"TO_CHAT_ID" => $chatId,
				"ATTACH" => $messageFields['ATTACH'],
				"KEYBOARD" => $messageFields['KEYBOARD'],
				"SYSTEM" => 'Y',
			);
			if (isset($messageFields['MESSAGE']))
			{
				$ar['MESSAGE'] = $messageFields['MESSAGE'];
			}
			
			$ar['MESSAGE'] = "[B]".$icons[$iconId]['TITLE']."[/B]n".$ar['MESSAGE'];
		}

		if (isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == 'N')
		{
			$ar['URL_PREVIEW'] = 'N';
		}

		$ar['SKIP_USER_CHECK'] = 'Y';
		$ar['SKIP_COMMAND'] = 'Y';

		$id = CIMChat::AddMessage($ar);
	}
	else
	{
		$userId = intval($messageFields['DIALOG_ID']);
		CModule::IncludeModule('imbot');
		
		if (isset($relations[$fromUserId]) && $messageFields['SYSTEM'] != 'Y')
		{
			$ar = Array(
				"FROM_USER_ID" => $fromUserId,
				"TO_USER_ID" => $userId,
				"ATTACH" => $messageFields['ATTACH'],
				"KEYBOARD" => $messageFields['KEYBOARD'],
			);
			if (isset($messageFields['MESSAGE']))
			{
				$ar['MESSAGE'] = $messageFields['MESSAGE'];
			}
		}
		else
		{
			$ar = Array(
				"FROM_USER_ID" => isset($relations[$fromUserId])? $fromUserId: 0,
				"TO_USER_ID" => $userId,
				"ATTACH" => $messageFields['ATTACH'],
				"KEYBOARD" => $messageFields['KEYBOARD'],
				"SYSTEM" => "Y",
			);
			if (isset($messageFields['MESSAGE']))
			{
				$ar['MESSAGE'] = $messageFields['MESSAGE'];
			}
			
			$ar['MESSAGE'] = "[B]".$icons[$iconId]['TITLE']."[/B]n".$ar['MESSAGE'];
		}

		if (isset($messageFields['URL_PREVIEW']) && $messageFields['URL_PREVIEW'] == 'N')
		{
			$ar['URL_PREVIEW'] = 'N';
		}

		$ar['SKIP_COMMAND'] = 'Y';
		$id = CIMMessage::Add($ar);
	}

	return $id;
}