From 7e83247508c6d5764aac9b31dd04552e44c75481 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Thu, 10 Jul 2014 10:57:44 +0200 Subject: [PATCH] Make "enable_notifications" a config attribute fixes #6671 --- lib/icinga/user.cpp | 19 ++++++++++++++++++- lib/icinga/user.hpp | 5 +++++ lib/icinga/user.ti | 4 +++- 3 files changed, 26 insertions(+), 2 deletions(-) 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; }; -- 2.40.0