• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_settings.php
  • Класс: CIMSettings
  • Вызов: CIMSettings::GetNotifyAccess
static function GetNotifyAccess($userId, $moduleId, $eventId, $clientId)
{
	$userId = intval($userId);
	if ($userId <= 0 || $moduleId == '' || $eventId == '' || $clientId == '')
	{
		return false;
	}

	if (Manager::isSettingsMigrated() || Manager::isUserMigrated($userId))
	{
		$clientId = $clientId === self::CLIENT_MAIL ? Notification::MAIL : $clientId;

		return Manager::getNotifyAccess($userId, $moduleId, $eventId, $clientId);
	}

	$notifySettingName = $clientId.'|'.$moduleId.'|'.$eventId;
	$userSettings = self::Get($userId);

	if ($userSettings['settings']['notifyScheme'] === 'simple')
	{
		if ($clientId === self::CLIENT_SITE && !$userSettings['settings']['notifySchemeSendSite'])
		{
			return false;
		}

		if ($clientId === self::CLIENT_XMPP && !$userSettings['settings']['notifySchemeSendXmpp'])
		{
			return false;
		}

		if ($clientId === self::CLIENT_MAIL && !$userSettings['settings']['notifySchemeSendEmail'])
		{
			return false;
		}

		if ($clientId === self::CLIENT_PUSH && !$userSettings['settings']['notifySchemeSendPush'])
		{
			return false;
		}

		return
			isset($userSettings['notify'])
			&& array_key_exists($notifySettingName, $userSettings['notify'])
			&& $userSettings['notify'][$notifySettingName] === false
				? false
				: true;
	}
	else
	{
		if (isset($userSettings['notify']) && array_key_exists($notifySettingName, $userSettings['notify']))
		{
			return $userSettings['notify'][$notifySettingName];
		}

		if (isset($userSettings['notify']) && array_key_exists($clientId.'|im|default', $userSettings['notify']))
		{
			return $userSettings['notify'][$clientId.'|im|default'];
		}
	}

	return false;
}