• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/addressbookbase.php
  • Класс: ofCDavAddressbookBase
  • Вызов: CDavAddressbookBase::PrepareFilters
protected function PrepareFilters($requestDocument, $id)
{
	$arFilter = array();

	if ($id)
	{
		if (is_numeric($id))
			$arFilter["ID"] = intval($id);
		else
			$arFilter['XML_ID'] = basename($id, '.vcf');
	}
	elseif (!empty($requestDocument) && $requestDocument->GetRoot() !== null && $requestDocument->GetRoot()->GetTag() == 'addressbook-multiget')
	{

		$arIds = array();
		$arXmlIds = array();

		$arProp = $requestDocument->GetPath('/addressbook-multiget/DAV::href');

		foreach ($arProp as $prop)
		{
			$parts = explode('/', $prop->GetContent());
			if (!($idTmp = basename(array_pop($parts), '.vcf')))
				continue;

			if (is_numeric($idTmp))
				$arIds[] = $idTmp;
			else
				$arXmlIds[] = $idTmp;
		}

		if ($arIds)
			$arFilter["ID"] = (count($arIds) > 1 ? $arIds : $arIds[0]);

		if ($arXmlIds)
			$arFilter["XML_ID"] = (count($arXmlIds) > 1 ? $arXmlIds : $arXmlIds[0]);

		if (is_array($arFilter['ID']))
			$arFilter['ID'] = array_unique($arFilter['ID']);
	}
	return $arFilter;
}