Code

Added branches container for old stuff
[gosa.git] / gosa-plugins / goto / addons / goto / events / class_DaemonEvent_notify.inc
index d37b7ecb80bb61263151c1ef375371537bb3e018..13bf90dd827c484585dadc17538ad52f442278a6 100644 (file)
@@ -24,46 +24,60 @@ class DaemonEvent_notify extends DaemonEvent
 {
   var $visible_for = USER_EVENT;
 
-  var $users = array();
-  var $groups= array(); 
+  var $user = array();
+  var $group= array(); 
 
   var $message = "";
   var $subject = "";
+  var $from    = "";
+
+  var $attributes = array("from","user","group","message","subject");
 
   public function __construct($config,$data = array())
   {
     DaemonEvent::__construct($config,$data);
+
+    $ui = get_userinfo();
+    $this->from = $ui->cn; 
+    $this->message = base64_decode($this->message);
+    $this->subject = base64_decode($this->subject);
+
     $this->s_Menu_Name  = _("Send message");
     $this->s_Event_Name = _("Send message");
-    $this->s_Schedule_Action = "job_trigger_action_notify";
-    $this->s_Trigger_Action= "gosa_trigger_action_notify";
+
+    $this->s_Schedule_Action = "job_send_user_msg";
+    $this->s_Trigger_Action= "gosa_send_user_msg";
     $this->s_Queued_Action= "trigger_action_notify";
-    $this->s_Menu_Image = "images/mailto.png";
-    $this->s_List_Image = "images/mailto.png";
-    $this->a_targets = array("GOsa"); // Required to get the event send. Maybe this is a wrong value.
+    $this->s_Menu_Image = "plugins/goto/images/notify.png";
+    $this->s_List_Image = "plugins/goto/images/notify.png";
+    $this->a_targets = array("GOSA"); // Required to get the event send. Maybe this is a wrong value.
   }
 
   public function execute()
   {
     DaemonEvent::execute();
-    if(isset($_POST['add_any_target'])){
-      echo "Not implemented yet";  
+
+    /* Check if target add dialog is open */
+    if($this->is_target_list_open() && $this->is_new){
+      return($this->get_target_add_list());
     }
+
+
     $display = $this->get_header();
     $tmp = $this->data;
     $smarty = get_smarty();
-    $smarty->assign("subject" ,"subject");
-    $smarty->assign("message" ,"message");
     $smarty->assign("data"        , $this->data);
     $smarty->assign("is_new"      , $this->is_new);
     $smarty->assign("timestamp"   , $this->get_time_select());
     
-    $smarty->assign("users" , $this->users);
-    $smarty->assign("groups" , $this->groups);
+    $smarty->assign("user" , $this->user);
+    $smarty->assign("group" , $this->group);
     
     $smarty->assign("add_str", msgPool::addButton(_("Target")));
     $smarty->assign("del_str", msgPool::delButton(_("Target")));
 
+    $smarty->assign("from",    xmlentities($this->from));
     $smarty->assign("subject", xmlentities($this->subject));
     $smarty->assign("message", xmlentities($this->message));
 
@@ -82,7 +96,10 @@ class DaemonEvent_notify extends DaemonEvent
     if(empty($this->message)){
       $msgs[] = msgPool::required(_("Message"));
     }
-    if(!count($this->groups) && !count($this->users)){
+    if(empty($this->from)){
+      $msgs[] = msgPool::required(_("From"));
+    }
+    if(!count($this->group) && !count($this->user)){
       $msgs[] = msgPool::required(_("Target"));
     }
     return($msgs);
@@ -93,17 +110,17 @@ class DaemonEvent_notify extends DaemonEvent
   {
     DaemonEvent::save_object();
 
-    if(isset($_POST['del_any_target']) && isset($_POST['groups'])){
-      foreach($_POST['groups'] as $id){
-        if(isset($this->groups[$id])){
-          unset($this->groups[$id]);
+    if(isset($_POST['del_any_target']) && isset($_POST['group'])){
+      foreach($_POST['group'] as $id){
+        if(isset($this->group[$id])){
+          unset($this->group[$id]);
         }
       }
     }
-    if(isset($_POST['del_any_target']) && isset($_POST['users'])){
-      foreach($_POST['users'] as $id){
-        if(isset($this->users[$id])){
-          unset($this->users[$id]);
+    if(isset($_POST['del_any_target']) && isset($_POST['user'])){
+      foreach($_POST['user'] as $id){
+        if(isset($this->user[$id])){
+          unset($this->user[$id]);
         }
       }
     }
@@ -114,25 +131,79 @@ class DaemonEvent_notify extends DaemonEvent
     if(isset($_POST['message'])){
       $this->message = get_post('message');
     }
+    if(isset($_POST['from'])){
+      $this->from = get_post('from');
+    }
   }
 
   public function add_users($targets)
   {
-    $this->users = $targets;
+    $add = $targets;
+    if(!is_array($add)){
+      $add = array($add);
+    }
+    foreach($add as $target){
+      if(!in_array($target,$this->user)){
+        $this->user[] = $target;
+      }
+    }
   }
 
+
   public function add_groups($targets)
   {
-    $this->groups = $targets;
+    $add = $targets;
+    if(!is_array($add)){
+      $add = array($add);
+    }
+    foreach($add as $target){
+      if(!in_array($target,$this->group)){
+        $this->group[] = $target;
+      }
+    }
   }
 
+
+  /*! \brief  Returns HTML content, displaying a dialog which allows to add new targets.
+    @return String HTML content. (EventTargetAddList)
+   */
+  public function get_target_add_list()
+  {
+    $this->target_add_list_used = TRUE;
+
+    if($this->target_divlist == NULL){
+      $this->target_divlist = new EventTargetAddUserList($this->config,$this);
+    }
+    $this->target_divlist->execute();
+
+    $smarty = get_smarty();
+    $smarty->assign("divlist",$this->target_divlist->Draw());
+    return($smarty->fetch(get_template_path('target_list.tpl', TRUE, dirname(__FILE__))));
+  }
+
+
+  /*! \brief Add a target MAC address
+      @param Array A List of all target that should be added.
+   */
+  public function add_targets($targets)
+  {
+    if(isset($targets['USERS'])){
+      $this->add_users($targets['USERS']);
+    }
+    if(isset($targets['GROUPS'])){
+      $this->add_groups($targets['GROUPS']);
+    }
+  }
+
+
   public function save()
   {
     $ret = DaemonEvent::save();
-    $ret['users']   = array_values($this->users);
-    $ret['groups']  = array_values($this->groups);
-    $ret['subject'] = $this->subject;
-    $ret['message'] = $this->message;
+    $ret['delivery_time'] = $ret['timestamp'];
+    $ret['user']   = array_values( $ret['user']);
+    $ret['group']  = array_values( $ret['group']);
+    $ret['subject'] = base64_encode($ret['subject']);
+    $ret['message'] = base64_encode($ret['message']);
     return($ret);
   }
 }