- Модуль: dav
- Путь к файлу: ~/bitrix/modules/dav/classes/general/groupdavclientcalendar.php
- Класс: CDavGroupdavClientCalendar
- Вызов: CDavGroupdavClientCalendar::GetCalendarItemsList
public function GetCalendarItemsList(
$path = '/',
$arHrefs = null,
$calendarData = false,
$depth = 1,
$arFilter = [],
$logger = null
)
{
$this->ClearErrors();
$this->Connect();
if (!is_array($arHrefs))
{
$arHrefs = array($arHrefs);
}
$arHrefsNew = [];
foreach ($arHrefs as $value)
{
if (!empty($value))
{
$arHrefsNew[] = $value;
}
}
$arProperties = array(
"getcontenttype",
"resourcetype",
"getetag",
);
if ($calendarData && !empty($arHrefsNew))
{
$arProperties[] = array("calendar-data", "urn:ietf:params:xml:ns:caldav");
}
$arFilterNew = [];
if (array_key_exists("start", $arFilter))
{
$arFilterNew = array("time-range" => array("start" => ConvertDateTime($arFilter["start"], "YYYYMMDDTHHMISSZ")));
}
if (!empty($arHrefsNew))
{
$result = $this->Report(
$path,
$arProperties,
$arFilterNew,
$arHrefsNew,
$depth,
$logger
);
}
else
{
$result = $this->Propfind(
$path,
$arProperties,
$arFilterNew,
$depth,
$logger
);
}
$this->Disconnect();
if (is_null($result) || $this->getError())
{
return null;
}
$xmlDoc = $result->GetBodyXml();
$arItems = [];
$arResponse = $xmlDoc->GetPath("/*/response");
foreach ($arResponse as $response)
{
$arHref = $response->GetPath("/response/href");
if (!empty($arHref))
{
$arItem = array(
"href" => urldecode($arHref[0]->GetContent()),
);
$arProps = $response->GetPath("/response/propstat/prop/*");
foreach ($arProps as $prop)
{
$s = $prop->GetContent();
if (is_string($s) || is_numeric($s))
{
$arItem[$prop->GetTag()] = $this->Encode($s);
}
}
if ($calendarData)
{
$arCalendarData = $response->GetPath("/response/propstat/prop/calendar-data");
if (!empty($arCalendarData))
{
$cal = new CDavICalendar($this->Encode($arCalendarData[0]->GetContent()));
if (!$cal->getComponent())
{
continue;
}
$arEvents = $cal->GetComponents('VTIMEZONE', false);
if (!empty($arEvents))
{
$arItem["calendar-data"] = $this->ConvertICalToArray($arEvents[0], $cal);
if (count($arEvents) > 1)
{
$arItem["calendar-data-ex"] = [];
$eventsCount = count($arEvents) - 1;
for ($i = 1; $i <= $eventsCount; $i++)
{
$arItem["calendar-data-ex"][] = $this->ConvertICalToArray($arEvents[$i], $cal);
}
}
}
}
}
$arItems[] = $arItem;
}
}
return $arItems;
}