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