public 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__ . "<br>Line: " . __LINE__); while ($arRes = $dbRes->Fetch()) { unset($arInsert[$arRes['ITEM_ID']]); } } foreach ($arInsert as $arAdd) { $DB->Add('b_im_recent', $arAdd); } } if (isset($arRecent[IM_MESSAGE_CHAT]) && !empty($arRecent[IM_MESSAGE_CHAT])) { $arChats = array(); $arInsert = array(); $CIMChat = new CIMChat(false, array('HIDE_LINK' => 'Y')); $arMessagesGroup = $CIMChat->GetLastSendMessage(array('ID' => array_keys($arRecent[IM_MESSAGE_CHAT]), 'ORDER' => 'ASC', 'LIMIT' => 30, 'USE_TIME_ZONE' => 'N')); foreach ($arMessagesGroup as $chatId => $arMessage) { $arChats[] = $chatId; $arInsert[$chatId] = array('USER_ID' => $USER->GetId(), 'ITEM_TYPE' => IM_MESSAGE_CHAT, 'ITEM_ID' => $chatId, 'ITEM_MID' => $arMessage['id']); } if (!empty($arChats)) { $strSql = "\n\t\t\t\t\t\tSELECT\n\t\t\t\t\t\t\tITEM_ID\n\t\t\t\t\t\tFROM\n\t\t\t\t\t\t\tb_im_recent\n\t\t\t\t\t\tWHERE\n\t\t\t\t\t\t\tUSER_ID = " . $USER->GetId() . "\n\t\t\t\t\t\t\tAND ITEM_TYPE = '" . IM_MESSAGE_CHAT . "'\n\t\t\t\t\t\t\tAND ITEM_ID IN (" . implode(',', $arChats) . ")\n\t\t\t\t\t"; $dbRes = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>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; }