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