From: Michael Friedrich Date: Tue, 15 Mar 2016 13:41:24 +0000 (+0100) Subject: DB IDO: Fix user notification type filters X-Git-Tag: v2.5.0~473 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=67b7df31898d6eb7074777ba1a705076cd194676;p=icinga2 DB IDO: Fix user notification type filters fixes #10766 --- diff --git a/lib/db_ido/userdbobject.cpp b/lib/db_ido/userdbobject.cpp index 9c4065071..bb61f4251 100644 --- a/lib/db_ido/userdbobject.cpp +++ b/lib/db_ido/userdbobject.cpp @@ -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; }