• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::GetSectionList
static function GetSectionList($params = [])
{
	$type = $params['CAL_TYPE'] ?? self::$type;

	$arFilter = [
		'CAL_TYPE' => $type,
	];

	if (isset($params['OWNER_ID']))
	{
		$arFilter['OWNER_ID'] = $params['OWNER_ID'];
	}
	elseif ($type === 'user' || $type === 'group')
	{
		$arFilter['OWNER_ID'] = self::GetOwnerId();
	}

	if (isset($params['ACTIVE']))
	{
		$arFilter['ACTIVE'] = $params['ACTIVE'];
	}

	if (isset($params['ADDITIONAL_IDS']) && !empty($params['ADDITIONAL_IDS']))
	{
		$arFilter['ADDITIONAL_IDS'] = $params['ADDITIONAL_IDS'];
	}

	$sectionList = CCalendarSect::GetList([
		'arFilter' => $arFilter,
		'checkPermissions' => ($params['checkPermissions'] ?? null),
		'getPermissions' => ($params['getPermissions'] ?? null),
	]);

	if ($type === 'user')
	{
		$sectionIdList = [];
		foreach ($sectionList as $section)
		{
			$sectionIdList[] = (int)$section['ID'];
		}

		$sectionLinkList = SectionConnectionTable::getList([
			'select' => [
				'SECTION_ID',
				'CONNECTION_ID',
				'ACTIVE',
				'IS_PRIMARY',
			],
			'filter' => [
				'=SECTION_ID' => $sectionIdList,
			],
		])->fetchAll();

		if (!empty($sectionLinkList))
		{
			foreach ($sectionList as $i => $section)
			{
				$sectionList[$i]['connectionLinks'] = [];
				foreach ($sectionLinkList as $sectionLink)
				{
					if ((int)$sectionLink['SECTION_ID'] === (int)$section['ID'])
					{
						$sectionList[$i]['connectionLinks'][] = [
							'id' => $sectionLink['CONNECTION_ID'],
							'active' => $sectionLink['ACTIVE'],
							'isPrimary' => $sectionLink['IS_PRIMARY'],
						];
					}
				};
			}
		}
	}

	if (($params['getImages'] ?? null))
	{
		$sectionList = self::fetchIconsForSectionList($sectionList);
	}

	return $sectionList;
}