• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecalendar2.php
  • Класс: CDavExchangeCalendar
  • Вызов: CDavExchangeCalendar::Add
public function Add($arFields)
	{
		$this->ClearErrors();

		$request = $this->CreateSOAPRequest("POST", $this->GetPath());
		$request->AddHeader("Content-Type", "text/xml; charset=utf-8");
		$request->AddHeader("SOAPAction", "http://schemas.microsoft.com/exchange/services/2006/messages/CreateItem");
		$request->AddHeader("Connection", "Keep-Alive");

		$arMapTmp = array("calendar_id" => "CalendarId", "calendarid" => "CalendarId", "mailbox" => "Mailbox");
		CDavExchangeClient::NormalizeArray($arFields, $arMapTmp);
		if (!array_key_exists("CalendarId", $arFields))
		{
			$arFields["CalendarId"] = "calendar";
		}

		$arFieldsNew = $this->FormatFieldsArray($arFields);

		$arParentFolderId = array("id" => $arFields["CalendarId"]);
		if (array_key_exists("Mailbox", $arFields))
		{
			$arParentFolderId["mailbox"] = $arFields["Mailbox"];
		}

		$request->CreateCreateItemBody($arParentFolderId, $arFieldsNew);

		$this->Connect();
		$response = $this->Send($request);
		$this->Disconnect();

		if (is_null($response))
		{
			return null;
		}

		if ($this->ParseError($response))
		{
			return null;
		}

		$arResultItemsList = [];
		$xmlDoc = $response->GetBodyXml();

		$arResponseMessage = $xmlDoc->GetPath("/Envelope/Body/CreateItemResponse/ResponseMessages/CreateItemResponseMessage");
		foreach ($arResponseMessage as $responseMessage)
		{
			$arResponseCode = $responseMessage->GetPath("/CreateItemResponseMessage/ResponseCode");
			$responseCode = null;
			if (!empty($arResponseCode))
			{
				$responseCode = $arResponseCode[0]->GetContent();
			}

			$responseClass = $responseMessage->GetAttribute("ResponseClass");

			if (
				(!is_null($responseClass) && ($responseClass !== "Success"))
				|| (!is_null($responseCode) && ($responseCode !== "NoError"))
			)
			{
				$arMessageText = $responseMessage->GetPath("/CreateItemResponseMessage/MessageText");
				$messageText = "Error";
				if (!empty($arMessageText))
				{
					$messageText = $arMessageText[0]->GetContent();
				}

				$this->AddError(!is_null($responseCode) ? $this->Encode($responseCode) : $this->Encode($responseClass), $this->Encode($messageText));
				continue;
			}

			$arCalendarItem = $responseMessage->GetPath("/CreateItemResponseMessage/Items/CalendarItem");
			foreach ($arCalendarItem as $calendarItem)
			{
				$arResultItemsList[] = $this->ConvertCalendarToArray($calendarItem);
			}
		}

		return $arResultItemsList;
	}