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; } public static function DeliveredMessage($step = 100, $maxExecutionTime = 10) { if (!CModule::IncludeModule("socialnetwork")) return false; $step = intval($step)>0? intval($step): 100; $startConvertTime = getmicrotime(); $step = intval($step); $dbMessage = CSocNetMessages::GetList( array("ID" => "ID"), array( "!DATE_VIEW" => "", "TO_DELETED" => "N", "MESSAGE_TYPE" => "P" ), false, array("nTopCount" => $step), array("ID", "FROM_USER_ID", "TO_USER_ID", "MESSAGE", "DATE_CREATE") ); while($arMessage = $dbMessage->Fetch()) { $ar = Array( "FROM_USER_ID" => intval($arMessage["FROM_USER_ID"]), "TO_USER_ID" => intval($arMessage["TO_USER_ID"]), "MESSAGE" => $arMessage["MESSAGE"], "MESSAGE_DATE" => $arMessage["DATE_CREATE"], "IMPORT_ID" => $arMessage["ID"], "CONVERT" => 'Y', ); CIMMessage::Add($ar); CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y", "FROM_DELETED" => "Y")); self::$converted++; self::$convertPerStep++; if($maxExecutionTime > 0 && (getmicrotime() - $startConvertTime > $maxExecutionTime)) break; } if ($maxExecutionTime > (2*(getmicrotime() - $startConvertTime))) self::$nextConvertPerStep = $step*2; else self::$nextConvertPerStep = $step; return true; } public static function UndeliveredMessageAgent() { if (!CModule::IncludeModule("socialnetwork")) return false; $activateNewAgent = false; $dbMessage = CSocNetMessages::GetList( array("ID" => "ASC"), array( "DATE_VIEW" => "", "TO_DELETED" => "N", "MESSAGE_TYPE" => "P" ), false, array("nTopCount" => '500'), array("ID", "FROM_USER_ID", "TO_USER_ID", "MESSAGE", "DATE_CREATE") ); while ($arMessage = $dbMessage->Fetch()) { $ar = Array( "FROM_USER_ID" => intval($arMessage["FROM_USER_ID"]), "TO_USER_ID" => intval($arMessage["TO_USER_ID"]), "MESSAGE" => $arMessage["MESSAGE"], "MESSAGE_DATE" => $arMessage["DATE_CREATE"], ); CIMMessage::Add($ar); CSocNetMessages::Update($arMessage["ID"], array("TO_DELETED" => "Y", "FROM_DELETED" => "Y")); $activateNewAgent = true; } return $activateNewAgent? "CIMConvert::UndeliveredMessageAgent();": ""; } public static function ConvertCount() { global $DB; $strSql = "SELECT COUNT(*) CNT FROM b_sonet_messages WHERE DATE_VIEW IS NOT NULL AND TO_DELETED = 'N' AND MESSAGE_TYPE = '".IM_MESSAGE_PRIVATE."'"; $res = $DB->Query($strSql, true); if (!$res) return 0; if ($row = $res->Fetch()) return intval($row['CNT']); return 0; } } ?>