- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_convert.php
- Класс: CIMConvert
- Вызов: CIMConvert::RecentList
static function RecentList()
{
global $DB, $USER;
$arRecent = CUserOptions::GetOption('im', 'recentList2', null);
if (is_null($arRecent))
{
$arResult = CUserOptions::GetOption('im', 'recentList', null);
if (!is_null($arResult))
{
unset($arResult[$GLOBALS['USER']->GetID()]);
foreach ($arResult as $key => $value)
$arRecent[IM_MESSAGE_PRIVATE][$key] = $value;
}
else
{
$arRecent = Array();
}
}
if (!empty($arRecent))
{
if (isset($arRecent[IM_MESSAGE_PRIVATE]) && !empty($arRecent[IM_MESSAGE_PRIVATE]))
{
$arUsers = Array();
$arInsert = Array();
$CIMMessage = new CIMMessage(false, array(
'HIDE_LINK' => 'Y'
));
$arMessages = $CIMMessage->GetLastSendMessage(Array(
'TO_USER_ID' => array_keys($arRecent[IM_MESSAGE_PRIVATE]),
'ORDER' => 'ASC',
'LIMIT' => 30,
'USE_TIME_ZONE' => 'N'
));
foreach ($arMessages as $userId => $arMessage)
{
$arUsers[] = $userId;
$arInsert[$userId] = Array(
'USER_ID' => $USER->GetId(),
'ITEM_TYPE' => IM_MESSAGE_PRIVATE,
'ITEM_ID' => $userId,
'ITEM_MID' => $arMessage['id'],
);
}
if (!empty($arUsers))
{
$strSql = "SELECT ITEM_ID FROM b_im_recent WHERE USER_ID = ".$USER->GetId()." AND ITEM_TYPE = '".IM_MESSAGE_PRIVATE."' AND ITEM_ID IN (".implode(',', $arUsers).")";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
while ($arRes = $dbRes->Fetch())
unset($arInsert[$arRes['ITEM_ID']]);
}
foreach ($arInsert as $arAdd)
$DB->Add('b_im_recent', $arAdd);
}
$massageType = null;
if(isset($arRecent[IM_MESSAGE_CHAT]) && !empty($arRecent[IM_MESSAGE_CHAT]))
$massageType = IM_MESSAGE_CHAT;
elseif(isset($arRecent[IM_MESSAGE_OPEN_LINE]) && !empty($arRecent[IM_MESSAGE_OPEN_LINE]))
$massageType = IM_MESSAGE_OPEN_LINE;
if (!empty($massageType))
{
$arChats = Array();
$arInsert = Array();
$CIMChat = new CIMChat(false, array(
'HIDE_LINK' => 'Y'
));
$arMessagesGroup = $CIMChat->GetLastSendMessage(Array(
'ID' => array_keys($arRecent[$massageType]),
'ORDER' => 'ASC',
'LIMIT' => 30,
'USE_TIME_ZONE' => 'N'
));
foreach ($arMessagesGroup as $chatId => $arMessage)
{
$arChats[] = $chatId;
$arInsert[$chatId] = Array(
'USER_ID' => $USER->GetId(),
'ITEM_TYPE' => $massageType,
'ITEM_ID' => $chatId,
'ITEM_MID' => $arMessage['id'],
);
}
if (!empty($arChats))
{
$strSql = "
SELECT
ITEM_ID
FROM
b_im_recent
WHERE
USER_ID = ".$USER->GetId()."
AND ITEM_TYPE = '".$massageType."'
AND ITEM_ID IN (".implode(',', $arChats).")
";
$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__);
while ($arRes = $dbRes->Fetch())
unset($arInsert[$arRes['ITEM_ID']]);
}
foreach ($arInsert as $arAdd)
$DB->Add('b_im_recent', $arAdd);
}
CUserOptions::SetOption('im', 'recentList2', Array());
}
else
{
CUserOptions::SetOption('im', 'recentList2', Array());
}
return true;
}