]> granicus.if.org Git - icinga2/commitdiff
DB IDO: Fix user notification type filters
authorMichael Friedrich <michael.friedrich@netways.de>
Tue, 15 Mar 2016 13:41:24 +0000 (14:41 +0100)
committerMichael Friedrich <michael.friedrich@netways.de>
Tue, 15 Mar 2016 13:53:25 +0000 (14:53 +0100)
fixes #10766

lib/db_ido/userdbobject.cpp

index 9c4065071009eead2699852cb1a4c2cf4bc2ba37..bb61f42511610bacb3f696b644bf1c051851fc3a 100644 (file)
@@ -49,16 +49,20 @@ Dictionary::Ptr UserDbObject::GetConfigFields(void) const
        fields->Set("host_notifications_enabled", user->GetEnableNotifications());
        fields->Set("service_notifications_enabled", user->GetEnableNotifications());
        fields->Set("can_submit_commands", 1);
-       fields->Set("notify_service_recovery", (user->GetTypeFilter() & NotificationRecovery) != 0);
-       fields->Set("notify_service_warning", (user->GetStateFilter() & StateFilterWarning) != 0);
-       fields->Set("notify_service_unknown", (user->GetStateFilter() & StateFilterUnknown) != 0);
-       fields->Set("notify_service_critical", (user->GetStateFilter() & StateFilterCritical) != 0);
-       fields->Set("notify_service_flapping", (user->GetTypeFilter() & (NotificationFlappingStart | NotificationFlappingEnd)) != 0);
-       fields->Set("notify_service_downtime", (user->GetTypeFilter() & (NotificationDowntimeStart | NotificationDowntimeEnd | NotificationDowntimeRemoved)) != 0);
-       fields->Set("notify_host_recovery", (user->GetTypeFilter() & NotificationRecovery) != 0);
-       fields->Set("notify_host_down", (user->GetStateFilter() & StateFilterDown) != 0);
-       fields->Set("notify_host_flapping", (user->GetTypeFilter() & (NotificationFlappingStart | NotificationFlappingEnd)) != 0);
-       fields->Set("notify_host_downtime", (user->GetTypeFilter() & (NotificationDowntimeStart | NotificationDowntimeEnd | NotificationDowntimeRemoved)) != 0);
+
+       int typeFilter = user->GetTypeFilter();
+       int stateFilter = user->GetStateFilter();
+
+       fields->Set("notify_service_recovery", (typeFilter & (1 << NotificationRecovery)) != 0);
+       fields->Set("notify_service_warning", (stateFilter & StateFilterWarning) != 0);
+       fields->Set("notify_service_unknown", (stateFilter & StateFilterUnknown) != 0);
+       fields->Set("notify_service_critical", (stateFilter & StateFilterCritical) != 0);
+       fields->Set("notify_service_flapping", (typeFilter & ((1 << NotificationFlappingStart) | (1 << NotificationFlappingEnd))) != 0);
+       fields->Set("notify_service_downtime", (typeFilter & ((1 << NotificationDowntimeStart) | (1 << NotificationDowntimeEnd) | (1 << NotificationDowntimeRemoved))) != 0);
+       fields->Set("notify_host_recovery", (typeFilter & (1 << NotificationRecovery)) != 0);
+       fields->Set("notify_host_down", (stateFilter & StateFilterDown) != 0);
+       fields->Set("notify_host_flapping", (typeFilter & ((1 << NotificationFlappingStart) | (1 << NotificationFlappingEnd))) != 0);
+       fields->Set("notify_host_downtime", (typeFilter & ((1 << NotificationDowntimeStart) | (1 << NotificationDowntimeEnd) | (1 << NotificationDowntimeRemoved))) != 0);
 
        return fields;
 }