- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/lib/controller/calendarajax.php
- Класс: BitrixCalendarControllerCalendarAjax
- Вызов: CalendarAjax::getTrackingSectionsAction
public function getTrackingSectionsAction()
{
if (Loader::includeModule('intranet') && !BitrixIntranetUtil::isIntranetUser())
{
return [];
}
$request = $this->getRequest();
$mode = $request->get('type');
$users = [];
if ($mode === 'users')
{
$userIds = $request->get('userIdList');
$ormRes = BitrixMainUserTable::getList([
'filter' => ['=ID' => $userIds],
'select' => ['ID', 'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME']
]);
while ($user = $ormRes->fetch())
{
$user['FORMATTED_NAME'] = CCalendar::GetUserName($user);
$users[] = $user;
}
$sections = CCalendarSect::getSuperposedList(['USERS' => $userIds]);
}
elseif ($mode === 'groups')
{
$groupIds = $request->get('groupIdList') ?? [];
$sections = CCalendarSect::getSuperposedList(['GROUPS' => $groupIds]);
if (Loader::includeModule('socialnetwork'))
{
foreach ($groupIds as $groupId)
{
$groupId = (int)$groupId;
$createDefaultGroupSection = CSocNetFeatures::isActiveFeature(
SONET_ENTITY_GROUP,
$groupId,
"calendar"
);
if ($createDefaultGroupSection)
{
foreach ($sections as $section)
{
if ((int)$section['OWNER_ID'] === $groupId)
{
$createDefaultGroupSection = false;
break;
}
}
}
if ($createDefaultGroupSection)
{
$sections[] = CCalendarSect::createDefault([
'type' => 'group',
'ownerId' => $groupId
]);
}
}
}
}
else
{
$types = [];
$typesRes = CCalendarType::GetList();
foreach ($typesRes as $type)
{
if (
$type['XML_ID'] !== 'user'
&& $type['XML_ID'] !== 'group'
&& $type['XML_ID'] !== 'location'
)
{
$types[] = $type['XML_ID'];
}
}
$sections = CCalendarSect::getSuperposedList(['TYPES' => $types]);
}
return [
'users' => $users,
'sections' => $sections
];
}