• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecalendar2.php
  • Класс: CDavExchangeCalendar
  • Вызов: CDavExchangeCalendar::DoUpdateItem
static function DoUpdateItem($userId, $itemXmlId, $itemModificationLabel, $arFields, $params)
	{
		if (DAV_EXCH_DEBUG)
		{
			CDav::WriteToLog("EXCHANGE DoUpdateItem called for user ".$userId, "MDFE");
		}

		$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))
		{
			return "";
		}

		$exchange = new CDavExchangeCalendar(
			$exchangeScheme,
			$exchangeServer,
			$exchangePort,
			$exchangeUsername,
			$exchangePassword
		);

		if (GW_DEBUG)
		{
			$exchange->Debug();
		}

		$exchangeMailbox = COption::GetOptionString("dav", "exchange_mailbox", "");
		$exchangeUseLogin = COption::GetOptionString("dav", "exchange_use_login", "Y");

		self::InitUserEntity();

		$userId = (int)$userId;
		$dbUserList = CUser::GetList(
			"",
			"",
			array("ACTIVE" => "Y", "!UF_DEPARTMENT" => false, "ID_EQUAL_EXACT" => $userId),
			array("SELECT" => array("UF_BXDAVEX_MAILBOX", "UF_BXDAVEX_CALSYNC"),
				"FIELDS" => array('ID', 'LOGIN'))
		);
		if ($arUser = $dbUserList->Fetch())
		{
			$mailbox = (($exchangeUseLogin === "Y")
				? $arUser["LOGIN"] . $exchangeMailbox
				: $arUser["UF_BXDAVEX_MAILBOX"])
			;
			if (!empty($mailbox))
			{
				if ($params['editInstance'])
				{
					[$itemXmlId, $itemModificationLabel] = $exchange->FindInstance([
						'parentExchangeId' => $params['originalDavXmlId'],
						'changekey' => $arFields['DAV_EXCH_LABEL'],
						'parentDateFrom' => $params['parentDateFrom'],
						'parentDateTo' => $params['parentDateTo'],
						'dateFrom' => $arFields['DATE_FROM'],
						'dateTo' => $arFields['DATE_TO'],
						'parentTz' => $params['instanceTz']
					]);
				}

				$arResult = $exchange->Update(
					array("XML_ID" => $itemXmlId, "MODIFICATION_LABEL" => $itemModificationLabel),
					$arFields,
					[
						'editInstance' => $params['editInstance'],
//							'instanceExchangeId' => $itemId['id'],
//							'changeKey' => $itemId['changekey'],
					]
				);

				if (is_array($arResult) && !empty($arResult))
				{
					return $arResult[0];
				}
			}
		}

		return $exchange->GetErrors();
	}