From: Gunnar Beutner Date: Thu, 10 Jul 2014 08:57:44 +0000 (+0200) Subject: Make "enable_notifications" a config attribute X-Git-Tag: v2.0.1~2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=7e83247508c6d5764aac9b31dd04552e44c75481;p=icinga2 Make "enable_notifications" a config attribute fixes #6671 --- diff --git a/lib/icinga/user.cpp b/lib/icinga/user.cpp index c7f5020d0..6a2afdc87 100644 --- a/lib/icinga/user.cpp +++ b/lib/icinga/user.cpp @@ -30,6 +30,8 @@ using namespace icinga; REGISTER_TYPE(User); REGISTER_SCRIPTFUNCTION(ValidateUserFilters, &User::ValidateFilters); +boost::signals2::signal User::OnEnableNotificationsChanged; + void User::OnConfigLoaded(void) { SetTypeFilter(FilterArrayToInt(GetTypes(), ~0)); @@ -49,7 +51,6 @@ void User::OnConfigLoaded(void) } } - void User::Stop(void) { DynamicObject::Stop(); @@ -124,3 +125,19 @@ void User::SetModifiedAttributes(int flags, const MessageOrigin& origin) OnVarsChanged(GetSelf(), origin); } } + +bool User::GetEnableNotifications(void) const +{ + if (!GetOverrideEnableNotifications().IsEmpty()) + return GetOverrideEnableNotifications(); + else + return GetEnableNotificationsRaw(); +} + +void User::SetEnableNotifications(bool enabled, const MessageOrigin& origin) +{ + SetOverrideEnableNotifications(enabled); + + OnEnableNotificationsChanged(GetSelf(), enabled, origin); +} + diff --git a/lib/icinga/user.hpp b/lib/icinga/user.hpp index af64c4bac..e001ad38e 100644 --- a/lib/icinga/user.hpp +++ b/lib/icinga/user.hpp @@ -46,9 +46,14 @@ public: static void ValidateFilters(const String& location, const Dictionary::Ptr& attrs); + bool GetEnableNotifications(void) const; + void SetEnableNotifications(bool enabled, const MessageOrigin& origin = MessageOrigin()); + int GetModifiedAttributes(void) const; void SetModifiedAttributes(int flags, const MessageOrigin& origin = MessageOrigin()); + static boost::signals2::signal OnEnableNotificationsChanged; + protected: virtual void Stop(void); diff --git a/lib/icinga/user.ti b/lib/icinga/user.ti index f18546ef8..1a4e10641 100644 --- a/lib/icinga/user.ti +++ b/lib/icinga/user.ti @@ -26,9 +26,11 @@ class User : CustomVarObject [config] String email; [config] String pager; - [state] bool enable_notifications { + [config] bool enable_notifications (EnableNotificationsRaw) { default {{{ return true; }}} }; + + [state] Value override_enable_notifications; [state] double last_notification; };