• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/push.php
  • Класс: BitrixPullPush
  • Вызов: Push::setConfig
static function setConfig($config, $userId = null)
{
	if (!BitrixMainLoader::includeModule('im'))
	{
		return false;
	}

	if (!is_array($config))
	{
		return false;
	}

	if (is_null($userId) && is_object($GLOBALS['USER']))
	{
		$userId = $GLOBALS['USER']->getId();
	}
	$userId = intval($userId);
	if ($userId <= 0)
	{
		return false;
	}

	$types = self::getTypes();
	$userConfig = self::getConfig($userId);
	$userOptions = CIMSettings::Get($userId)[CIMSettings::NOTIFY] ?? [];

	$needUpdate = false;
	foreach ($types as $moduleId => $module)
	{
		foreach ($module['TYPES'] as $typeId => $type)
		{
			if (isset($config[$moduleId][$typeId]))
			{
				$needUpdate = true;
				$userConfig[$moduleId][$typeId] = (bool)$config[$moduleId][$typeId];
			}
			if ($type['DEFAULT'] == $userConfig[$moduleId][$typeId])
			{
				unset($userOptions['push|'.$moduleId.'|'.$typeId]);
			}
			else
			{
				$userOptions['push|'.$moduleId.'|'.$typeId] = $userConfig[$moduleId][$typeId];
			}
		}
	}

	if ($needUpdate)
	{
		CIMSettings::Set(CIMSettings::NOTIFY, $userOptions, $userId);
		CIMSettings::ClearCache($userId);
		unset(self::$config[$userId]);
	}

	return true;
}