• Модуль: 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();";
}