- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangemail.php
- Класс: CDavExchangeMail
- Вызов: CDavExchangeMail::DataSync
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)/* || (COption::GetOptionString("dav", "agent_mail", "N") != "Y")*/)
{
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 = (int)$paramUserId;
$arUserFilter = array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false);
if ($paramUserId)
{
$arUserFilter["ID_EQUAL_EXACT"] = $paramUserId;
}
if ($exchangeUseLogin === "N")
{
$arUserFilter["!UF_BXDAVEX_MAILBOX"] = false;
}
$dbUserList = CUser::GetList(
"UF_BXDAVEX_MLSYNC", "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 += (int)$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 += (int)$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();";
}