• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/event_calendar.php
  • Класс: CECCalendar
  • Вызов: CECCalendar::GetList
function GetList($arParams)
{
	$sectionId = isset($arParams['sectionId']) && $arParams['sectionId'] !== false ? $arParams['sectionId'] : 0;
	$iblockId = $arParams['iblockId'];
	$xmlId = isset($arParams['xmlId']) && $arParams['xmlId'] !== false ? $arParams['xmlId'] : 0;
	$forExport = $arParams['forExport'] == true;
	$checkPermissions = $forExport ? 'N' : 'Y';
	$bOwner = $arParams['bOwner'] === true;
	$arFilter = Array(
		"SECTION_ID" => $sectionId,
		"IBLOCK_ID" => $iblockId,
		"ACTIVE" => "Y",
		"CHECK_PERMISSIONS" => $checkPermissions
	);

	if ($bOwner)
	{
		$ownerType = $arParams['ownerType'];
		$ownerId = $arParams['ownerId'];
		if ($ownerType == 'USER')
		{
			$arFilter["CREATED_BY"] = $ownerId;
			$userId = $arParams['userId'] ? intval($arParams['userId']) : $GLOBALS['USER']->GetID();
			$bCurUserOwner = $ownerId == $userId;
		}
		elseif ($ownerType == 'GROUP')
		{
			$arFilter["SOCNET_GROUP_ID"] = $ownerId;
			$bCurUserOwner = true;
		}
	}
	else
	{
		$ownerType = false;
		$ownerId = false;
		$bCurUserOwner = true;
	}

	/* modified by wladart */
	// get superpose calendars
	//if (!$bOwner && CModule::IncludeModule('extranet'))
	if (CModule::IncludeModule('extranet'))
	{
		if (CExtranet::IsExtranetSite())
		{
			$arUsersInMyGroupsID = CExtranet::GetMyGroupsUsers(SITE_ID);
			$arPublicUsersID = CExtranet::GetPublicUsers();
			$arUsersToFilter = array_merge($arUsersInMyGroupsID, $arPublicUsersID);
			$arFilter["CREATED_BY"]  = $arUsersToFilter;
		}
		else
		{
			$arFilter["CREATED_BY"] = CExtranet::GetIntranetUsers();
		}
	}
	/* --modified by wladart */

	if ($xmlId !== 0)
	{
		$arFilter['XML_ID'] = $xmlId;
		if ($sectionId === 0)
			unset($arFilter['SECTION_ID']);
	}

	$rsData = CIBlockSection::GetList(Array('ID' => 'ASC'), $arFilter);
	$arCalendars = array();

	if (!$arParams['bSuperposed'] && !$arParams['bOnlyID'])
	{
		$outerUrl = $GLOBALS['APPLICATION']->GetCurPageParam('', array("action", "bx_event_calendar_request", "clear_cache", "bitrix_include_areas", "bitrix_show_mode", "back_url_admin", "SEF_APPLICATION_CUR_PAGE_URL"), false);
	}

	while($arRes = $rsData->Fetch())
	{
		$privateStatus = CECCalendar::GetPrivateStatus($iblockId, $arRes['ID'], $ownerType);

		if ($privateStatus == 'private' && !$bCurUserOwner)
			continue;

		if ($arParams['bOnlyID']) // We need only IDs of the calendars
		{
			$arCalendars[] = intval($arRes['ID']);
			continue;
		}

		$calendar = array(
			"ID" => intval($arRes['ID']),
			"IBLOCK_ID" => $iblockId,
			"IBLOCK_SECTION_ID" => intval($arRes['IBLOCK_SECTION_ID']),
			"NAME" => htmlspecialcharsex($arRes['NAME']),
			"DESCRIPTION" => htmlspecialcharsex($arRes['DESCRIPTION']),
			"COLOR" => CECCalendar::GetColor($iblockId, $arRes['ID'], $ownerType),
			"PRIVATE_STATUS" => $privateStatus
		);

		if (!$arParams['bSuperposed'])
		{
			$calendar["OUTLOOK_JS"] = CECCalendar::GetOutlookLink(array('ID' => intval($arRes['ID']), 'XML_ID' => $arRes['XML_ID'], 'IBLOCK_ID' => $iblockId, 'NAME' => htmlspecialcharsex($arRes['NAME']), 'PREFIX' => CEventCalendar::GetOwnerName(array('iblockId' => $iblockId, 'ownerType' => $ownerType, 'ownerId' => $ownerId)), 'LINK_URL' => $outerUrl));
			$arExport = CECCalendar::GetExportParams($iblockId, $arRes['ID'], $ownerType, $ownerId);

			$calendar["EXPORT"] = $arExport['ALLOW'];
			$calendar["EXPORT_SET"] = $arExport['SET'];
			$calendar["EXPORT_LINK"] = $arExport['LINK'];
		}

		$arCalendars[] = $calendar;
	}
	return $arCalendars;
}