• Модуль: calendar
  • Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_sect.php
  • Класс: CCalendarSect
  • Вызов: CCalendarSect::CanDo
static function CanDo($operation, $sectId = 0, $userId = null)
{
	$res = null;
	global $USER;
	if ((!$USER || !is_object($USER)) || $USER->CanDoOperation('edit_php'))
	{
		return true;
	}

	if (!is_numeric($userId))
	{
		$userId = CCalendar::GetCurUserId();
	}

	if (
		CCalendar::IsBitrix24()
		&& Loader::includeModule('bitrix24')
		&& CBitrix24::isPortalAdmin($userId)
	)
	{
		return true;
	}

	if (
		CCalendar::IsSocNet()
		&& CCalendar::IsSocnetAdmin()
		&&(
			CCalendar::GetType() === 'group'
			|| CCalendar::GetType() === 'user'
			|| CCalendar::IsBitrix24()
		)
	)
	{
		return true;
	}

	if ((int)$sectId && (int)$userId && !self::$bClearOperationCache)
	{
		$sectionPermKey = $userId . '|' . $sectId;
		if (isset(self::$userSectionPermissions[$sectionPermKey]))
		{
			$res = in_array($operation, self::$userSectionPermissions[$sectionPermKey], true);
		}
	}

	if ($res === null)
	{
		$res = in_array($operation, self::GetOperations($sectId, $userId), true);
	}

	self::$bClearOperationCache = false;
	return $res;
}