From cee838b8533396f87c0bfd9e4a041c78222423b8 Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 5 Nov 2009 14:30:35 +0000 Subject: [PATCH] Added notify event to group management git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14766 594d385d-05f5-0310-b6e9-bd551577e9d8 --- .../admin/groups/class_groupManagement.inc | 60 +++++++++++++++++++ .../plugins/admin/groups/group-filter.xml | 2 +- gosa-core/plugins/admin/groups/group-list.xml | 8 +++ 3 files changed, 69 insertions(+), 1 deletion(-) diff --git a/gosa-core/plugins/admin/groups/class_groupManagement.inc b/gosa-core/plugins/admin/groups/class_groupManagement.inc index c64284127..8567a3dd4 100644 --- a/gosa-core/plugins/admin/groups/class_groupManagement.inc +++ b/gosa-core/plugins/admin/groups/class_groupManagement.inc @@ -67,8 +67,68 @@ class groupManagement extends management $this->registerAction("edit_environment","editEntry"); $this->registerAction("edit_appgroup","editEntry"); $this->registerAction("edit_mailgroup","editEntry"); + + $this->registerAction("sendMessage", "sendMessage"); + $this->registerAction("saveEventDialog", "saveEventDialog"); + $this->registerAction("abortEventDialog", "closeDialogs"); + } + + // Inject user actions + function detectPostActions() + { + $action = management::detectPostActions(); + if(isset($_POST['save_event_dialog'])) $action['action'] = "saveEventDialog"; + if(isset($_POST['abort_event_dialog'])) $action['action'] = "abortEventDialog"; + return($action); + } + + + /*! \brief Sends a message to a set of users using gosa-si events. + */ + function saveEventDialog() + { + $this->dialogObject->save_object(); + $msgs = $this->dialogObject->check(); + if(count($msgs)){ + msg_dialog::displayChecks($msgs); + }else{ + $o_queue = new gosaSupportDaemon(); + $o_queue->append($this->dialogObject); + if($o_queue->is_error()){ + msg_dialog::display(_("Infrastructure error"), msgPool::siError($o_queue->get_error()),ERROR_DIALOG); + } + $this->closeDialogs(); + } } + + /*! \brief Sends a message to a set of users using gosa-si events. + */ + function sendMessage($action="",$target=array(),$all=array()) + { + $uids = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + foreach($target as $dn){ + $ldap->cat($dn,array('cn')); + if($ldap->count()){ + $attrs = $ldap->fetch(); + $uids[] = $attrs['cn'][0]; + } + } + if(count($uids)){ + $events = DaemonEvent::get_event_types(USER_EVENT); + $event = "DaemonEvent_notify"; + if(isset($events['BY_CLASS'][$event])){ + $type = $events['BY_CLASS'][$event]; + $this->dialogObject = new $type['CLASS_NAME']($this->config); + $this->dialogObject->add_groups($uids); + $this->dialogObject->set_type(SCHEDULED_EVENT); + } + } + } + + function editEntry($action="",$target=array(),$all=array(), $altTabClass ="", $altTabType = "", $altAclCategory="") { management::editEntry($action,$target); diff --git a/gosa-core/plugins/admin/groups/group-filter.xml b/gosa-core/plugins/admin/groups/group-filter.xml index 0b49bfa32..694ac89e5 100644 --- a/gosa-core/plugins/admin/groups/group-filter.xml +++ b/gosa-core/plugins/admin/groups/group-filter.xml @@ -9,7 +9,7 @@ - GroupLDAP + LDAP (&(objectClass=posixGroup)$NAME(|$PRIMARY$MAIL$SAMBA)) dn objectClass diff --git a/gosa-core/plugins/admin/groups/group-list.xml b/gosa-core/plugins/admin/groups/group-list.xml index 6f28226f2..0110296b0 100644 --- a/gosa-core/plugins/admin/groups/group-list.xml +++ b/gosa-core/plugins/admin/groups/group-list.xml @@ -98,6 +98,14 @@ + + sendMessage + entry + DaemonEvent_notify + plugins/goto/images/notify.png + + + exporter -- 2.30.2