- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/exchangecalendar2.php
- Класс: CDavExchangeCalendar
- Вызов: CDavExchangeCalendar::GetList
public function GetList($arFilter = [], $arMode = [])
{
$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/FindItem");
$request->AddHeader("Connection", "Keep-Alive");
$arMapTmp = array("calendar_id" => "CalendarId", "calendarid" => "CalendarId", "mailbox" => "Mailbox");
CDavExchangeClient::NormalizeArray($arFilter, $arMapTmp);
if (!array_key_exists("CalendarId", $arFilter))
{
$arFilter["CalendarId"] = "calendar";
}
$arMapTmp = array("calendarview" => "CalendarView", "calendar_view" => "CalendarView", "itemshape" => "ItemShape", "item_shape" => "ItemShape");
CDavExchangeClient::NormalizeArray($arMode, $arMapTmp);
if (!array_key_exists("ItemShape", $arMode))
{
$arMode["ItemShape"] = "AllProperties";
}
$arParentFolderId = array("id" => $arFilter["CalendarId"]);
if (array_key_exists("Mailbox", $arFilter))
{
$arParentFolderId["mailbox"] = $arFilter["Mailbox"];
}
$arItem = null;
if (array_key_exists("CalendarView", $arMode))
{
if (is_array($arMode["CalendarView"]))
{
$arCalendarView = $arMode["CalendarView"];
$arMapTmp = array(
0 => "StartDate",
"startdate" => "StartDate",
"start_date" => "StartDate",
1 => "EndDate",
"enddate" => "EndDate",
"end_date" => "EndDate"
);
CDavExchangeClient::NormalizeArray($arCalendarView, $arMapTmp);
if (array_key_exists("StartDate", $arCalendarView) && array_key_exists("EndDate", $arCalendarView))
{
$arItem = array(
"type" => "CalendarView",
"properties" => array(
"StartDate" => date("c", MakeTimeStamp($arCalendarView["StartDate"])),
"EndDate" => date("c", MakeTimeStamp($arCalendarView["EndDate"]))
)
);
}
}
if (is_null($arItem))
{
$this->AddError("WrongCalendarViewMode", "Wrong CalendarView mode.");
}
}
$request->CreateFindItemBody($arParentFolderId, $arItem, $arMode["ItemShape"]);
$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;
}
$arCalendarItem = $responseMessage->GetPath("/FindItemResponseMessage/RootFolder/Items/CalendarItem");
foreach ($arCalendarItem as $calendarItem)
{
$arResultItemsList[] = $this->ConvertCalendarToArray($calendarItem);
}
}
return $arResultItemsList;
}