- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/Access/Permission/Catalog/IblockCatalogPermissionsSaver.php
- Класс: BitrixCatalogAccessPermissionCatalogIblockCatalogPermissionsSaver
- Вызов: IblockCatalogPermissionsSaver::updateShopAccessGroup
static function updateShopAccessGroup(array $userIds, array $allUserIds, string $groupType): void
{
$shopIblockGroups = [
ShopGroupAssistant::SHOP_MANAGER_USER_GROUP_CODE,
ShopGroupAssistant::SHOP_ADMIN_USER_GROUP_CODE
];
if (!in_array($groupType, $shopIblockGroups, true))
{
return;
}
$groupId = self::getShopGroupIdByType($groupType);
if (!$groupId)
{
return;
}
$currentGroupUserIds = CGroup::getGroupUser($groupId);
$nonGroupUsers = array_diff($allUserIds, $userIds);
if ($nonGroupUsers)
{
$removeFromGroup = array_intersect($nonGroupUsers, $currentGroupUserIds);
if ($removeFromGroup)
{
$userGroupCollection = UserGroupTable::query()
->where('GROUP_ID', $groupId)
->whereIn('USER_ID', $removeFromGroup)
->fetchCollection()
;
foreach ($userGroupCollection as $userGroup)
{
$userId = $userGroup->getUserId();
$userGroup->delete();
CUser::clearUserGroupCache($userId);
}
}
}
$addToGroup = array_diff($userIds, $currentGroupUserIds);
foreach ($addToGroup as $userId)
{
CUser::appendUserGroup($userId, [$groupId]);
}
}