- Модуль: 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;
}