- Модуль: landing
- Путь к файлу: ~/bitrix/modules/landing/lib/binding/group.php
- Класс: BitrixLandingBindingGroup
- Вызов: Group::addSiteRights
protected function addSiteRights(int $siteId, array $groupRoles = []): void
{
$tasks = self::getAccessTasks(true);
$roleId = self::getRoleId();
// for new binding
if (!$groupRoles && BitrixMainLoader::includeModule('socialnetwork'))
{
$groupRoles = [
'read' => SONET_ROLES_USER,
'edit' => SONET_ROLES_USER,
'sett' => SONET_ROLES_USER,
'delete' => SONET_ROLES_USER,
];
// try to retrieve roles from group features
$res = CSocNetFeaturesPerms::getList(
[],
[
'FEATURE_ENTITY_ID' => $this->bindingId,
'FEATURE_ENTITY_TYPE' => SONET_ENTITY_GROUP,
'FEATURE_FEATURE' => SocialNetwork::SETTINGS_CODE,
],
);
while ($row = $res->fetch())
{
$groupRoles[$row['OPERATION_ID']] = $row['ROLE'];
}
}
foreach ($tasks as $task)
{
if (!isset($groupRoles[$task['NAME']]))
{
continue;
}
$check = RightsTable::getList([
'select' => [
'ID'
],
'filter' => [
'ENTITY_ID' => $siteId,
'=ENTITY_TYPE' => Rights::ENTITY_TYPE_SITE,
'=ACCESS_CODE' => 'SG' . $this->bindingId . '_' . $groupRoles[$task['NAME']],
'TASK_ID' => $task['ID'],
'ROLE_ID' => $roleId
],
])->fetch();
if (!$check)
{
RightsTable::add([
'ENTITY_ID' => $siteId,
'ENTITY_TYPE' => Rights::ENTITY_TYPE_SITE,
'TASK_ID' => $task['ID'],
'ACCESS_CODE' => 'SG' . $this->bindingId . '_' . $groupRoles[$task['NAME']],
'ROLE_ID' => $roleId
])->isSuccess();
}
}
}