- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/im.php
- Класс: BitrixImOpenLinesIm
- Вызов: Im::addMessagesNewsletter
static function addMessagesNewsletter($messages): array
{
$result = array();
$userCodes = array();
if (is_array($messages) && Loader::includeModule('im'))
{
foreach ($messages as $code => $message)
{
$result[$code] = false;
$userCodes[] = $code;
}
$rawChat = ChatTable::getList(array(
'select' => array('ID', 'ENTITY_ID', 'RECENT_MID' => 'RECENT.ITEM_MID', 'ENTITY_DATA_1'),
'filter' => array(
'=ENTITY_TYPE' => 'LINES',
'=ENTITY_ID' => $userCodes
),
'runtime' => array(
new ReferenceField(
'RECENT',
'BitrixImModelRecentTable',
array(
'=this.ID' => 'ref.ITEM_ID',
'=this.AUTHOR_ID' => 'ref.USER_ID',
'ref.ITEM_TYPE' => new SqlExpression('?i', IM_MESSAGE_OPEN_LINE)
)
)
)
));
while($rowChat = $rawChat->fetch())
{
//TODO: Replace with the method BitrixImOpenLinesChat::parseLinesChatEntityId or BitrixImOpenLinesChat::parseLiveChatEntityId
$chatFieldData = explode('|', $rowChat['ENTITY_DATA_1']);
$blockTimestamp = (int)$chatFieldData[8];
if ($blockTimestamp !== 0 && $blockTimestamp < (new DateTime())->getTimestamp())
{
continue;
}
$fields = $messages[$rowChat['ENTITY_ID']];
$fields['MESSAGE_TYPE'] = IM_MESSAGE_OPEN_LINE;
$fields['TO_CHAT_ID'] = $rowChat['ID'];
$fields['FROM_USER_ID'] = 0;
$fields['SYSTEM'] = 'Y';
$fields['SKIP_USER_CHECK'] = 'Y';
$fields['IMPORTANT_CONNECTOR'] = 'Y';
$fields['INCREMENT_COUNTER'] = 'N';
$fields['PUSH'] = 'N';
if(empty($rowChat['RECENT_MID']))
$fields['RECENT_ADD'] = 'N';
else
$fields['RECENT_ADD'] = 'Y';
$fields['NO_SESSION_OL'] = 'Y';
$result[$rowChat['ENTITY_ID']] = CIMMessenger::Add($fields);
}
}
return $result;
}