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

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

	$userId = intval($userId);
	if (!$userId)
	{
		return false;
	}

	if (isset(self::$config[$userId]))
	{
		return self::$config[$userId];
	}

	$pushDisabled = !BitrixPullPush::getStatus($userId);

	$userOptions = CIMSettings::Get($userId)[CIMSettings::NOTIFY] ?? [];

	$result = Array();
	foreach ($userOptions as $optionId => $optionValue)
	{
		list($clientId, $moduleId, $type) =  explode('|', $optionId);
		if ($clientId != CIMSettings::CLIENT_PUSH)
		{
			continue;
		}

		$result[$moduleId][$type] = (bool)$optionValue;
	}

	$notifySchema = CIMNotifySchema::GetNotifySchema();

	foreach ($notifySchema as $moduleId => $module)
	{
		foreach ($module['NOTIFY'] as $notifyType => $notifyConfig)
		{
			if ($pushDisabled)
			{
				$result[$moduleId][$notifyType] = false;
				continue;
			}

			if (!$notifyConfig['PUSH'] && $notifyConfig['DISABLED']['PUSH'])
			{
				continue;
			}

			if (!isset($result[$moduleId][$notifyType]) || $notifyConfig['DISABLED']['PUSH'])
			{
				$result[$moduleId][$notifyType] = (bool)$notifyConfig['PUSH'];
			}
		}
	}

	self::$config[$userId] = $result;

	return $result;
}