• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/Configuration/Configuration.php
  • Класс: BitrixImConfigurationConfiguration
  • Вызов: Configuration::updateGroupForUsers
static function updateGroupForUsers(int $groupId, array $candidates, int $sort, string $groupType): void
{
	$join = new ConditionTree();

	if ($groupType === self::GENERAL_GROUP)
	{
		$join = Join::on('this.GENERAL_GROUP_ID', 'ref.ID');
	}
	elseif ($groupType === self::NOTIFY_GROUP)
	{
		$join = Join::on('this.NOTIFY_GROUP_ID', 'ref.ID');
	}

	$query =
		OptionUserTable::query()
			->addSelect('USER_ID')
			->registerRuntimeField(
				'OPTION_GROUP',
				new Reference(
					'OPTION_GROUP',
					OptionGroupTable::class,
					$join,
					['join_type' => Join::TYPE_INNER]
				)
			)
			->whereIn('USER_ID', $candidates)
			->where('OPTION_GROUP.SORT', '<=', $sort)
	;

	$users = [];
	foreach ($query->exec() as $row)
	{
		$users[] = $row["USER_ID"];
	}


	if ($groupType === self::GENERAL_GROUP)
	{
		OptionUserTable::updateMulti($users, ['GENERAL_GROUP_ID' => $groupId]);
	}
	elseif ($groupType === self::NOTIFY_GROUP)
	{
		OptionUserTable::updateMulti($users, ['NOTIFY_GROUP_ID' => $groupId]);
	}
}