• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecontacts.php
  • Класс: CDavExchangeContacts
  • Вызов: CDavExchangeContacts::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("addressbook_id" => "AddressbookId", "addressbookid" => "AddressbookId", "mailbox" => "Mailbox");
	CDavExchangeClient::NormalizeArray($arFields, $arMapTmp);
	if (!array_key_exists("AddressbookId", $arFields))
	{
		$arFields["AddressbookId"] = "contacts";
	}

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

	$arParentFolderId = array("id" => $arFields["AddressbookId"]);
	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 = array();
	$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;
		}

		$arContactItem = $responseMessage->GetPath("/CreateItemResponseMessage/Items/Contact");
		foreach ($arContactItem as $contactItem)
		{
			$arResultItemsList[] = $this->ConvertContactToArray($contactItem);
		}
	}

	return $arResultItemsList;
}