• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/Configuration/General.php
  • Класс: BitrixImConfigurationGeneral
  • Вызов: General::updateGroupSettings
static function updateGroupSettings(int $groupId, array $settings): void
{
	if ($settings === [])
	{
		return;
	}

	$settings = self::checkingValues($settings);
	$encodedSettings = self::encodeSettings($settings);

	$query =
		OptionStateTable::query()
			->setSelect(['NAME', 'VALUE'])
			->where('GROUP_ID', $groupId)
			->whereLike('NAME', self::ENTITY.'%')
	;

	foreach ($query->exec() as $row)
	{
		if (array_key_exists($row['NAME'], $encodedSettings))
		{
			if ($row['VALUE'] === $encodedSettings[$row['NAME']])
			{
				unset($encodedSettings[$row['NAME']]);
				continue;
			}
			OptionStateTable::update(
				[
					'GROUP_ID' => $groupId,
					'NAME' => $row['NAME']
				],
				['VALUE' => $encodedSettings[$row['NAME']]]
			);
			unset($encodedSettings[$row['NAME']]);
		}
	}

	$addedSettings = [];
	foreach ($encodedSettings as $name => $value)
	{
		$addedSettings[] = [
			'GROUP_ID' => $groupId,
			'NAME' => $name,
			'VALUE' => $value
		];
	}
	if ($addedSettings !== [])
	{
		OptionStateTable::addMulti($addedSettings, true);
	}
}