Example #1
0
 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;
 }