• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecontacts.php
  • Класс: CDavExchangeContacts
  • Вызов: CDavExchangeContacts::ConvertContactToArray
private function ConvertContactToArray($contactItem)
{
	$arResultItem = array();

	$arItemId = $contactItem->GetPath("/Contact/ItemId");
	if (!empty($arItemId))
	{
		$arResultItem["XML_ID"] = $arItemId[0]->GetAttribute("Id");
		$arResultItem["MODIFICATION_LABEL"] = $arItemId[0]->GetAttribute("ChangeKey");
	}

	$arGivenName = $contactItem->GetPath("/Contact/GivenName");
	if (!empty($arGivenName))
	{
		$arResultItem["NAME"] = $this->Encode($arGivenName[0]->GetContent());
	}

	$arMiddleName = $contactItem->GetPath("/Contact/MiddleName");
	if (!empty($arMiddleName))
	{
		$arResultItem["SECOND_NAME"] = $this->Encode($arMiddleName[0]->GetContent());
	}

	$arSurname = $contactItem->GetPath("/Contact/Surname");
	if (!empty($arSurname))
	{
		$arResultItem["LAST_NAME"] = $this->Encode($arSurname[0]->GetContent());
	}

	$arCompanyName = $contactItem->GetPath("/Contact/CompanyName");
	if (!empty($arCompanyName))
	{
		$arResultItem["WORK_COMPANY"] = $this->Encode($arCompanyName[0]->GetContent());
	}

	$arDepartment = $contactItem->GetPath("/Contact/Department");
	if (!empty($arDepartment))
	{
		$arResultItem["WORK_DEPARTMENT"] = $this->Encode($arDepartment[0]->GetContent());
	}

	$arJobTitle = $contactItem->GetPath("/Contact/JobTitle");
	if (!empty($arJobTitle))
	{
		$arResultItem["WORK_POSITION"] = $this->Encode($arJobTitle[0]->GetContent());
	}


	$arPhysicalAddresses = $contactItem->GetPath("/Contact/PhysicalAddresses/Entry");
	foreach ($arPhysicalAddresses as $physicalAddress)
	{
		$entryKey = mb_strtolower($physicalAddress->GetAttribute("Key"));

		if ($entryKey === "business")
		{
			$prefix = "WORK";
		}
		elseif ($entryKey === "home")
		{
			$prefix = "PERSONAL";
		}
		elseif (!isset($arResultItem["PERSONAL_STREET"]))
		{
			$prefix = "PERSONAL";
		}

		$arStreet = $physicalAddress->GetPath("/Entry/Street");
		if (!empty($arStreet))
		{
			$arResultItem[$prefix . "_STREET"] = $this->Encode($arStreet[0]->GetContent());
		}

		$arCity = $physicalAddress->GetPath("/Entry/City");
		if (!empty($arCity))
		{
			$arResultItem[$prefix . "_CITY"] = $this->Encode($arCity[0]->GetContent());
		}

		$arState = $physicalAddress->GetPath("/Entry/State");
		if (!empty($arState))
		{
			$arResultItem[$prefix . "_STATE"] = $this->Encode($arState[0]->GetContent());
		}

		$arCountryOrRegion = $physicalAddress->GetPath("/Entry/CountryOrRegion");
		if (!empty($arCountryOrRegion))
		{
			$country = $this->Encode($arCountryOrRegion[0]->GetContent());
			$ar = GetCountryArray();
			$i = array_search($country, $ar["reference"]);
			if ($i !== false)
			{
				$arResultItem[$prefix . "_COUNTRY"] = $ar["reference"][$i];
			}
		}

		$arPostalCode = $physicalAddress->GetPath("/Entry/PostalCode");
		if (!empty($arPostalCode))
		{
			$arResultItem[$prefix . "_ZIP"] = $this->Encode($arPostalCode[0]->GetContent());
		}
	}

	$arPhoneNumbers = $contactItem->GetPath("/Contact/PhoneNumbers/Entry");
	foreach ($arPhoneNumbers as $phoneNumber)
	{
		$entryKey = mb_strtolower($phoneNumber->GetAttribute("Key"));
		$v = $phoneNumber->GetContent();

		if ($entryKey === "businessphone")
		{
			$arResultItem["WORK_PHONE"] = $v;
		}
		elseif ($entryKey === "homephone")
		{
			$arResultItem["PERSONAL_PHONE"] = $v;
		}
		elseif ($entryKey === "homephone2")
		{
			$arResultItem["PERSONAL_FAX"] = $v;
		}
		elseif ($entryKey === "mobilephone")
		{
			$arResultItem["PERSONAL_MOBILE"] = $v;
		}
		elseif ($entryKey === "pager")
		{
			$arResultItem["PERSONAL_PAGER"] = $v;
		}
		elseif ($entryKey === "businessphone2")
		{
			$arResultItem["WORK_FAX"] = $v;
		}
		else
		{
			if (!empty($v))
			{
				$arResultItem["WORK_PAGER"] = $v;
			}
		}
	}

	$arEmailAddresses = $contactItem->GetPath("/Contact/EmailAddresses/Entry");
	foreach ($arEmailAddresses as $emailAddress)
	{
		$v = $emailAddress->GetContent();
		if (!empty($v) && empty($arResultItem["EMAIL"]))
		{
			$arResultItem["EMAIL"] = $v;
		}
	}

	$arImAddresses = $contactItem->GetPath("/Contact/ImAddresses/Entry");
	foreach ($arImAddresses as $imAddress)
	{
		$v = $imAddress->GetContent();
		if (!empty($v) && empty($arResultItem["PERSONAL_ICQ"]))
		{
			$arResultItem["PERSONAL_ICQ"] = $v;
		}
	}

	$arBusinessHomePage = $contactItem->GetPath("/Contact/BusinessHomePage");
	if (!empty($arBusinessHomePage))
	{
		$arResultItem["WORK_WWW"] = $this->Encode($arBusinessHomePage[0]->GetContent());
	}

	return $arResultItem;
}