• Модуль: intranet
  • Путь к файлу: ~/bitrix/modules/intranet/classes/general/event_calendar.php
  • Класс: CEventCalendar
  • Вызов: CEventCalendar::GetEventsEx
public function GetEventsEx($arParams = array(), $bDontCache = false)
{
	$iblockId = isset($arParams['iblockId']) ? $arParams['iblockId'] : $this->iblockId;
	if (!isset($arParams['sectionId']))
		$arParams['sectionId'] = $this->GetSectionId();
	$bLoadAll = isset($arParams['bLoadAll']) ? $arParams['bLoadAll'] : false;
	$arCalendarIds = isset($arParams['arCalendarIds']) ? $arParams['arCalendarIds'] : $this->arCalendarIds;
	$bJS = isset($arParams['bJS']) ? $arParams['bJS'] : false;
	$forExport = isset($arParams['forExport']) ? $arParams['forExport'] : false;
	$fromLimit = isset($arParams['fromLimit']) ? $arParams['fromLimit'] : $this->fromLimit;
	$toLimit = isset($arParams['toLimit']) ? $arParams['toLimit'] : $this->toLimit;
	$checkPermissions = ($forExport || $arParams['checkPermissions'] === false) ? 'N' : 'Y';

	$bCache = $bDontCache ? false : $this->bCache;

	if ($bCache)
	{
		$cache = new CPHPCache;
		$cachePath = $this->cachePath.'events/'.$iblockId.'/';
		$cacheId = serialize(array($arParams['sectionId'], $fromLimit, $toLimit, $arCalendarIds));
		if(($tzOffset = CTimeZone::GetOffset()) <> 0)
			$cacheId .= "_".$tzOffset;

		if ($cache->InitCache($this->cacheTime, $cacheId, $cachePath))
		{
			$res = $cache->GetVars();
			$arEvents = $res['arEvents'];
		}
	}

	if (!$bCache || empty($res['arEvents']))
	{
		$arEvents = $this->GetEvents($arParams);
		if ($bCache)
		{
			$cache->StartDataCache($this->cacheTime, $cacheId, $cachePath);
			$cache->EndDataCache(array("arEvents" => $arEvents));
		}
	}
	else
	{
		// Save hidden calendar id's
		if (!(isset($arParams['DontSaveOptions']) && $arParams['DontSaveOptions']) && class_exists('CUserOptions'))
			$this->SaveHidden($arCalendarIds);
	}

	return $arEvents;
}