• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::Init
function Init($params)
{
	global $USER, $APPLICATION;
	$access = new CAccess();
	$access->UpdateCodes();
	if (!$USER || !is_object($USER))
		$USER = new CUser;
	// Owner params
	self::$siteId = isset($params['siteId']) ? $params['siteId'] : SITE_ID;
	self::$type = $params['type'];
	self::$arTypes = CCalendarType::GetList();
	self::$bIntranet = self::IsIntranetEnabled();
	self::$bSocNet = self::IsSocNet();
	self::$userId = (isset($params['userId']) && $params['userId'] > 0) ? (int)$params['userId'] : self::GetCurUserId(true);
	self::$bOwner = self::$type === 'user' || self::$type === 'group';
	self::$settings = self::GetSettings();
	self::$userSettings = BitrixCalendarUserSettings::get();
	self::$pathesForSite = self::GetPathes(self::$siteId);
	self::$pathToUser = self::$pathesForSite['path_to_user'];
	self::$bSuperpose = $params['allowSuperpose'] != false && self::$bSocNet;
	self::$bAnonym = !$USER || !$USER->IsAuthorized();
	self::$userNameTemplate = self::$settings['user_name_template'];
	self::$bAMPM = IsAmPmMode();
	self::$bWideDate = mb_strpos(FORMAT_DATETIME, 'MMMM') !== false;
	self::$id = $this->GetId();

	if (isset($params['SectionControlsDOMId']))
	{
		self::$SectionsControlsDOMId = $params['SectionControlsDOMId'];
	}

	if (self::$bOwner && isset($params['ownerId']) && $params['ownerId'] > 0)
	{
		self::$ownerId = (int)$params['ownerId'];
	}

	self::$showTasks = (self::$type === 'user' || self::$type === 'group')
		&& ($params['showTasks'] ?? '') !== false
		&& $params['viewTaskPath']
		&& Loader::includeModule('tasks')
		&& self::$userSettings['showTasks'] !== 'N';

	if (self::$showTasks)
	{
		self::$viewTaskPath = $params['viewTaskPath'];
		self::$editTaskPath = $params['editTaskPath'];
	}

	self::GetPermissions(array(
		'type' => self::$type,
		'bOwner' => self::$bOwner,
		'userId' => self::$userId,
		'ownerId' => self::$ownerId,
	));

	// Cache params
	if (isset($params['cachePath']))
	{
		self::$cachePath = $params['cachePath'];
	}
	if (isset($params['cacheTime']))
	{
		self::$cacheTime = $params['cacheTime'];
	}
	self::$bCache = self::$cacheTime > 0;

	// Urls
	$page = preg_replace(
		array(
			"/EVENT_ID=.*?&/i",
			"/EVENT_DATE=.*?&/i",
			"/CHOOSE_MR=.*?&/i",
			"/action=.*?&/i",
			"/bx_event_calendar_request=.*?&/i",
			"/clear_cache=.*?&/i",
			"/bitrix_include_areas=.*?&/i",
			"/bitrix_show_mode=.*?&/i",
			"/back_url_admin=.*?&/i",
			"/IFRAME=.*?&/i",
			"/IFRAME_TYPE=.*?&/i",
		),
		"", $params['pageUrl'].'&'
	);
	$page = preg_replace(array("/^(.*?)&$/i","/^(.*?)?$/i"), "$1", $page);
	self::$actionUrl = $page;

	self::$path = empty(self::$ownerId)
		? self::GetServerPath().$page
		: self::GetPath(self::$type, self::$ownerId, true);

	self::$outerUrl = $APPLICATION->GetCurPageParam('', [
		"action",
		"bx_event_calendar_request",
		"clear_cache",
		"bitrix_include_areas",
		"bitrix_show_mode",
		"back_url_admin",
		"SEF_APPLICATION_CUR_PAGE_URL",
		"EVENT_ID",
		"EVENT_DATE",
		"CHOOSE_MR",
	], false);

	// *** Meeting room params ***
	$RMiblockId = self::$settings['rm_iblock_id'];
	self::$allowReserveMeeting = $params["allowResMeeting"] && $RMiblockId > 0;

	if(self::$allowReserveMeeting && !$USER->IsAdmin() && (CIBlock::GetPermission($RMiblockId) < "R"))
	{
		self::$allowReserveMeeting = false;
	}
}