- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecalendar2.php
- Класс: CDavExchangeCalendar
- Вызов: CDavExchangeCalendar::FindInstance
public function FindInstance($params)
{
$id = null;
$changekey = null;
$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/UpdateItem");
$request->AddHeader("Connection", "Keep-Alive");
$arParentFolderId = [
'id' => 'calendar',
'changekey' => $params['changekey']
];
$startDate = CCalendar::GetOriginalDate($params['parentDateFrom'], $params['dateFrom'], $params['parentTz'], 'Y-m-dTH:i:sZ');
$endDate = CCalendar::GetOriginalDate($params['parentDateTo'], $params['dateTo'], $params['parentTz'], 'Y-m-dTH:i:sZ');
$utcTz = new DateTimeZone("UTC");
$arItem = array(
"type" => "CalendarView",
"properties" => array(
"StartDate" => $startDate,
"EndDate" => $endDate,
"MaxEntriesReturned" => 1
)
);
$request->CreateFindItemBody($arParentFolderId, $arItem);
$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/FindItemResponse/ResponseMessages/FindItemResponseMessage");
foreach ($arResponseMessage as $responseMessage)
{
$arResponseCode = $responseMessage->GetPath("FindItemResponseMessage/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("FindItemResponseMessage/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;
}
$rootFolder = $responseMessage->GetPath("FindItemResponseMessage/RootFolder");
if ((int)$rootFolder[0]->GetAttribute("TotalItemsInView") === 1)
{
$itemId = $rootFolder[0]->GetPath("Items/CalendarItem/ItemId");
$id = $itemId[0]->GetAttribute("Id");
$changekey = $itemId[0]->GetAttribute("ChangeKey");
$arCalendarItem = $responseMessage->GetPath("FindItemResponseMessage/RootFolder/Items/CalendarItem");
foreach ($arCalendarItem as $calendarItem)
{
$arResultItemsList = $this->ConvertCalendarToArray($calendarItem);
}
}
}
return [$id, $changekey];
}