- Модуль: imopenlines
- Путь к файлу: ~/bitrix/modules/imopenlines/lib/config.php
- Класс: BitrixImOpenLinesConfig
- Вызов: Config::canDoOperation
static function canDoOperation($configId, $entity, $action, $userId = null)
{
if (isset(self::$cacheOperation[$configId][$entity][$action]))
{
return self::$cacheOperation[$configId][$entity][$action];
}
$userId = $userId ?? SecurityHelper::getCurrentUserId();
if (isset(self::$cachePermission[$userId][$entity][$action]))
{
$allowedUserIds = self::$cachePermission[$userId][$entity][$action];
}
else
{
$permission = SecurityPermissions::createWithCurrentUser();
$allowedUserIds = SecurityHelper::getAllowedUserIds(
$userId,
$permission->getPermission($entity, $action)
);
self::$cachePermission[$userId][$entity][$action] = $allowedUserIds;
}
if (!is_array($allowedUserIds))
{
self::$cacheOperation[$configId][$entity][$action] = true;
return true;
}
elseif (empty($allowedUserIds))
{
self::$cacheOperation[$configId][$entity][$action] = false;
return false;
}
$canEdit = false;
$orm = ModelQueueTable::getList([
'filter' => [
'=USER_ID' => $allowedUserIds,
'=CONFIG_ID' => $configId
],
'order' => [
'SORT' => 'ASC',
'ID' => 'ASC'
]
]);
if ($row = $orm->fetch())
{
$canEdit = true;
}
if (!$canEdit)
{
$configManager = new self();
$config = $configManager->get($configId, false);
if ($config['MODIFY_USER_ID'] == $userId)
{
$canEdit = true;
}
}
self::$cacheOperation[$configId][$entity][$action] = $canEdit;
return $canEdit;
}