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