} } $bOpenMessenger = isset($_POST['OPEN_MESSENGER']) && intval($_POST['OPEN_MESSENGER']) == 1 ? true : false; $bOpenContactList = isset($_POST['OPEN_CONTACT_LIST']) && intval($_POST['OPEN_CONTACT_LIST']) == 1 ? true : false; // Online $arOnline = array(); if ($bOpenMessenger || $bOpenContactList) { $CIMContactList = new CIMContactList(); $arOnline = $CIMContactList->GetStatus(); } // Counters $arResult["COUNTERS"] = CUserCounter::GetValues($USER->GetID(), $_POST['SITE_ID']); // Exchange $arResult["MAIL_COUNTER"] = 0; if (CModule::IncludeModule("dav")) { $ar = CDavExchangeMail::GetTicker($GLOBALS["USER"]); if ($ar !== null) { $arResult["MAIL_COUNTER"] = intval($ar["numberOfUnreadMessages"]); } } $arSend = array('REVISION' => IM_REVISION, 'USER_ID' => $USER->GetId(), 'ONLINE' => !empty($arOnline) ? $arOnline['users'] : array(), 'COUNTERS' => $arResult["COUNTERS"], 'MAIL_COUNTER' => $arResult["MAIL_COUNTER"], 'SERVER_TIME' => time(), 'ERROR' => ""); if (CModule::IncludeModule('pull')) { $arChannel = CPullChannel::Get($USER->GetId()); if (is_array($arChannel)) { $arSend['PULL_CONFIG'] = array('CHANNEL_ID' => $arChannel['CHANNEL_ID'], 'LAST_ID' => $arChannel['LAST_ID'], 'PATH' => $arChannel['PATH'], 'PATH_WS' => $arChannel['PATH_WS'], 'METHOD' => $arChannel['METHOD'], 'ERROR' => ''); } } $CIMMessage = new CIMMessage(); $arMessage = $CIMMessage->GetUnreadMessage(array('USE_TIME_ZONE' => 'N', 'ORDER' => 'ASC')); if ($arMessage['result']) { CIMMessage::GetFlashMessage($arMessage['unreadMessage']);
public static function DataSync($paramUserId = 0) { $exchangeScheme = COption::GetOptionString("dav", "exchange_scheme", "http"); $exchangeServer = COption::GetOptionString("dav", "exchange_server", ""); $exchangePort = COption::GetOptionString("dav", "exchange_port", "80"); $exchangeUsername = COption::GetOptionString("dav", "exchange_username", ""); $exchangePassword = COption::GetOptionString("dav", "exchange_password", ""); if (empty($exchangeServer)) { CAgent::RemoveAgent("CDavExchangeMail::DataSync();", "dav"); COption::SetOptionString("dav", "agent_mail", "N"); return ""; } $exchange = new CDavExchangeMail($exchangeScheme, $exchangeServer, $exchangePort, $exchangeUsername, $exchangePassword); //$exchange->Debug(); $exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", ""); $exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y"); self::InitUserEntity(); $maxNumber = 5; $index = 0; $paramUserId = intval($paramUserId); $arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false); if ($paramUserId > 0) { $arUserFilter["ID_EQUAL_EXACT"] = $paramUserId; } if ($exchangeUseLogin == "N") { $arUserFilter["!UF_BXDAVEX_MAILBOX"] = false; } $dbUserList = CUser::GetList($by = "UF_BXDAVEX_MLSYNC", $order = "asc", $arUserFilter, array('SELECT' => array('UF_BXDAVEX_MAILBOX', 'UF_BXDAVEX_MLSYNC'), 'FIELDS' => array('ID', 'LOGIN'))); while ($arUser = $dbUserList->Fetch()) { $index++; if ($index > $maxNumber) { break; } $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_BXDAVEX_MLSYNC" => ConvertTimeStamp(time(), FULL))); $mailbox = $exchangeUseLogin == "Y" ? $arUser["LOGIN"] . $exchangeMailbox : $arUser["UF_BXDAVEX_MAILBOX"]; if (empty($mailbox)) { continue; } $numberOfUnread = 0; $arInbox = $exchange->GetFolderById(array("XML_ID" => "inbox", "Mailbox" => $mailbox)); if (is_array($arInbox)) { foreach ($arInbox as $inbox) { if (isset($inbox["UNREAD_COUNT"])) { $numberOfUnread += intval($inbox["UNREAD_COUNT"]); } $arInbox1 = $exchange->GetFoldersList(array("XML_ID" => $inbox["XML_ID"], "Mailbox" => $mailbox)); if (is_array($arInbox1)) { foreach ($arInbox1 as $inbox1) { if (isset($inbox1["UNREAD_COUNT"])) { $numberOfUnread += intval($inbox1["UNREAD_COUNT"]); } } } } } $GLOBALS["USER_FIELD_MANAGER"]->Update("USER", $arUser["ID"], array("UF_UNREAD_MAIL_COUNT" => $numberOfUnread)); CUserCounter::Set($arUser["ID"], 'dav_unread_mail', $numberOfUnread, '**'); } return "CDavExchangeMail::DataSync();"; }