• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar.php
  • Класс: CCalendar
  • Вызов: CCalendar::GetSettings
static function GetSettings($params = [])
{
	if (!is_array($params))
	{
		$params = [];
	}
	if (
		isset(self::$settings)
		&& !empty(self::$settings)
		&& ($params['request'] ?? '') === false
	)
	{
		return self::$settings;
	}

	$pathes_for_sites = COption::GetOptionString('calendar', 'pathes_for_sites', true);
	if (($params['forseGetSitePathes'] ?? false) || !$pathes_for_sites)
		$pathes = self::GetPathes($params['site'] ?? false);
	else
		$pathes = [];

	if (!isset($params['getDefaultForEmpty']) || $params['getDefaultForEmpty'] !== false)
		$params['getDefaultForEmpty'] = true;

	$siteId = isset($params['site']) ? $params['site'] : SITE_ID;
	$resMeetingCommonForSites = COption::GetOptionString('calendar', 'rm_for_sites', true);
	$siteIdForResMeet = !$resMeetingCommonForSites && $siteId ? $siteId : false;

	self::$settings = array(
		'work_time_start' => COption::GetOptionString('calendar', 'work_time_start', 9),
		'work_time_end' => COption::GetOptionString('calendar', 'work_time_end', 19),
		'year_holidays' => COption::GetOptionString('calendar', 'year_holidays', Loc::getMessage('EC_YEAR_HOLIDAYS_DEFAULT')),
		'year_workdays' => COption::GetOptionString('calendar', 'year_workdays', Loc::getMessage('EC_YEAR_WORKDAYS_DEFAULT')),
		'week_holidays' => explode('|', COption::GetOptionString('calendar', 'week_holidays', 'SA|SU')),
		'week_start' => COption::GetOptionString('calendar', 'week_start', 'MO'),
		'user_name_template' => self::GetUserNameTemplate($params['getDefaultForEmpty']),
		'sync_by_push' => COption::GetOptionString('calendar', 'sync_by_push', false),
		'user_show_login' => COption::GetOptionString('calendar', 'user_show_login', true),
		'path_to_user' => COption::GetOptionString('calendar', 'path_to_user', "/company/personal/user/#user_id#/"),
		'path_to_user_calendar' => COption::GetOptionString('calendar', 'path_to_user_calendar', "/company/personal/user/#user_id#/calendar/"),
		'path_to_group' => COption::GetOptionString('calendar', 'path_to_group', "/workgroups/group/#group_id#/"),
		'path_to_group_calendar' => COption::GetOptionString('calendar', 'path_to_group_calendar', "/workgroups/group/#group_id#/calendar/"),
		'path_to_vr' => COption::GetOptionString('calendar', 'path_to_vr', ""),
		'path_to_rm' => COption::GetOptionString('calendar', 'path_to_rm', ""),
		'rm_iblock_type' => COption::GetOptionString('calendar', 'rm_iblock_type', ""),
		'rm_iblock_id' => COption::GetOptionString('calendar', 'rm_iblock_id', "", $siteIdForResMeet, !!$siteIdForResMeet),
		'dep_manager_sub' => COption::GetOptionString('calendar', 'dep_manager_sub', true),
		'denied_superpose_types' => unserialize(COption::GetOptionString('calendar', 'denied_superpose_types', serialize([])), ['allowed_classes' => false]),
		'pathes_for_sites' => $pathes_for_sites,
		'pathes' => $pathes,
		'forum_id' => COption::GetOptionString('calendar', 'forum_id', ""),
		'rm_for_sites' => COption::GetOptionString('calendar', 'rm_for_sites', true),
	);

	$arPathes = self::GetPathesList();
	foreach($arPathes as $pathName)
	{
		if (!isset(self::$settings[$pathName]))
			self::$settings[$pathName] = COption::GetOptionString('calendar', $pathName, "");
	}

	if(self::$settings['work_time_start'] > 23)
		self::$settings['work_time_start'] = 23;
	if (self::$settings['work_time_end'] <= self::$settings['work_time_start'])
		self::$settings['work_time_end'] = self::$settings['work_time_start'] + 1;
	if (self::$settings['work_time_end'] > 23.30)
		self::$settings['work_time_end'] = 23.30;

	if (self::$settings['forum_id'] == "")
	{
		self::$settings['forum_id'] = COption::GetOptionString("tasks", "task_forum_id", "");
		if (self::$settings['forum_id'] == "" && Loader::includeModule("forum"))
		{
			$db = CForumNew::GetListEx();
			if ($ar = $db->GetNext())
				self::$settings['forum_id'] = $ar["ID"];
		}
		COption::SetOptionString("calendar", "forum_id", self::$settings['forum_id']);
	}

	return self::$settings;
}