- Модуль: 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;
}