Code

Added notify event to group management
authorhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Thu, 5 Nov 2009 14:30:35 +0000 (14:30 +0000)
committerhickert <hickert@594d385d-05f5-0310-b6e9-bd551577e9d8>
Thu, 5 Nov 2009 14:30:35 +0000 (14:30 +0000)
git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@14766 594d385d-05f5-0310-b6e9-bd551577e9d8

gosa-core/plugins/admin/groups/class_groupManagement.inc
gosa-core/plugins/admin/groups/group-filter.xml
gosa-core/plugins/admin/groups/group-list.xml

index c64284127e1f2d6205206f4e1753c863f238e5b6..8567a3dd4abb70f23fd3cde075d35e3d1db01e89 100644 (file)
@@ -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);
index 0b49bfa32eed529448cd5df956ef2a504395e7ab..694ac89e5d83a1fa9e52d39bbb0c8452daa56fc8 100644 (file)
@@ -9,7 +9,7 @@
 
   <search>
     <query>
-      <backend>GroupLDAP</backend>
+      <backend>LDAP</backend>
       <filter>(&amp;(objectClass=posixGroup)$NAME(|$PRIMARY$MAIL$SAMBA))</filter>
       <attribute>dn</attribute>
       <attribute>objectClass</attribute>
index 6f28226f25c94a9350fca49f2490f83d8c2e0298..0110296b04ebda5a68c5868b8a2f2e1664500e07 100644 (file)
       <label>Remove</label>
     </action>
 
+    <action>
+      <name>sendMessage</name>
+      <type>entry</type>
+      <depends>DaemonEvent_notify</depends>
+      <image>plugins/goto/images/notify.png</image>
+      <label>Send message</label>
+    </action>
+
     <action>
       <type>exporter</type>
     </action>