• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/addressbookbase.php
  • Класс: ofCDavAddressbookBase
  • Вызов: CDavAddressbookBase::GetVCardContent
private function GetVCardContent($entity)
{
	$arVCardContact = [];
	$map = [
		"TYPE" => self::V_CARD_CONTENT_TYPE,
		"VERSION" => self::V_CARD_CONTENT_VERSION,
	];
	$map = array_merge($map, $this->GetVCardDataMap($entity));

	if (!empty($map['IMG']))
	{
		if (is_array($map['IMG']))
		{
			if (!empty($map['IMG']['src']))
			{
				$arTempFile = $map['IMG'];
			}
		}
		else if ((int)$map['IMG'] > 0)
		{
			$arTempFile = CFile::ResizeImageGet(
				$map['IMG'],
				[
					"width" => BitrixMainConfigOption::get("dav", "vcard_image_width", 400),
					"height" => BitrixMainConfigOption::get("dav", "vcard_image_width", 400)
				],
				BX_RESIZE_IMAGE_PROPORTIONAL,
				false,
				false,
				true,
				BitrixMainConfigOption::get("dav", "vcard_image_quality", 60)
			);
		}

		if (!empty($arTempFile) && file_exists($_SERVER["DOCUMENT_ROOT"] . $arTempFile['src']))
		{
			if (empty(file_get_contents($this->getDomainLink() . $arTempFile['src'])))
			{
				$arImageTypes = [
					IMAGETYPE_JPEG => 'JPEG',
					IMAGETYPE_GIF => 'GIF',
					IMAGETYPE_PNG => 'PNG'
				];

				$imageType = "JPEG";
				if ($imageInfo = CFile::GetImageSize($_SERVER["DOCUMENT_ROOT"] . $arTempFile['src']) and isset($arImageTypes[$imageInfo[2]]))
				{
					$imageType = $arImageTypes[$imageInfo[2]];
				}

				$map["PHOTO"] = [
					"VALUE" => base64_encode($_SERVER["DOCUMENT_ROOT"] . $arTempFile['src']),
					"PARAMETERS" => ["ENCODING" => "BASE64", "TYPE" => $imageType]
				];
			}
			else
			{
				$map["PHOTO"] = ["VALUE" => $this->encodeUrn($this->getDomainLink() . $arTempFile['src'])];
			}
		}
		else if (!empty($arTempFile))
		{
			$map['PHOTO'] = ['VALUE' => $this->encodeUrn($arTempFile['src'])];
		}
	}
	unset($map['IMG']);

	foreach ($map as $propertyTitle => $property)
	{
		$arVCardContact[$propertyTitle] = $property;
	}

	$cal = new CDavICalendarComponent($arVCardContact);

	return $cal->Render();
}