Code

Updated comment handling
[gosa.git] / include / sieve / class_sieveElement_Vacation.inc
index 95e6ef216e45d965c9a42bd2e0500055c8b61c6e..e1306b2231ba11c7be5ad29d27bcddabdfcd70e4 100644 (file)
@@ -7,13 +7,18 @@ class sieve_vacation
   var $from     = "";
   var $mime     = "";
   var $handle   = "";
-  var $reason   = "";
+  var $reason   = "\"I am not available, currently.\"";
   var $addresses= array();
   var $object_id= -1;
   var $Expert   = FALSE;
+  var $parent   = NULL;
 
-  function sieve_vacation($data,$object_id)
+  function sieve_vacation($data,$object_id,$parent)
   {
+    $this->parent = $parent;
+    $this->object_id = $object_id;
+    $this->parent->add_require("vacation");
+
     /* Usage:   vacation [":days" number] [":subject" string]
        [":from" string] [":addresses" string-list]
        [":mime"] [":handle" string] <reason: string> */
@@ -21,6 +26,9 @@ class sieve_vacation
     /* Not all attribute types are supported by the sieve class right now */
     $known_attrs = array(":days",":subject",":from",":mime",":handle");
 
+    /* skip if empty */
+    if(($data == NULL) || !is_array($data)) return;
+
     /* Walk through elements */
     for($i = 0 ; $i < count($data['ELEMENTS']) ; $i ++){
 
@@ -54,8 +62,16 @@ class sieve_vacation
       }
 
       /* Add the vacation message */
-      if($node['class'] == "quoted-string"){
-        $this->reason = $node['text'];
+      if(in_array($node['class'],array("quoted-string","multi-line"))){
+
+        $tmp = sieve_get_strings($data['ELEMENTS'],$i);
+        $strs= $tmp['STRINGS'];
+        $data = ""; 
+        foreach($strs as $str){
+          $data .= $str;
+        }
+        $this->reason = $data;//preg_replace("/\"/","",$data);
       }
     }
   }
@@ -66,9 +82,12 @@ class sieve_vacation
     if($this->days){
       $str.= ":days ".$this->days;
     }
-    $str .= ":addresses ".sieve_create_strings($this->addresses);
-    if($this->subject){
-      $str.= ":subject ".sieve_create_strings($this->subject);
+
+    if(count($this->addresses)){
+      $str .= ":addresses ".sieve_create_strings($this->addresses);
+      if($this->subject){
+        $str.= ":subject ".sieve_create_strings($this->subject);
+      }
     }
     if($this->mime){
       $str.= ":mime ".sieve_create_strings($this->mime);
@@ -95,7 +114,10 @@ class sieve_vacation
       $tmp = array();
       $tmp2 = split(",",$vr);
       foreach($tmp2 as $val){
-        $tmp[] = "\"".trim(preg_replace("/\"/","",$val))."\"";
+        $ad = trim(preg_replace("/\"/","",$val));
+        if(!empty($ad)){
+          $tmp[] = "\"".$ad."\"";
+        }
       }
       $this->addresses = $tmp;
     }
@@ -109,7 +131,17 @@ class sieve_vacation
 
   function check()
   {
-    return(array())  ;
+    $msgs = array();
+    $err = FALSE;
+    foreach($this->addresses as $addr){
+      if(!is_email(preg_replace("/\"/","",$addr))){
+        $err = true;
+      }
+    }
+    if($err){
+      $msgs[] = _("Alternative sender addresse must be valid email addresses.");
+    }
+    return($msgs);
   }
 
   function execute()
@@ -119,14 +151,21 @@ class sieve_vacation
       $Addresses .= $key.", ";
     }
     $Addresses = preg_replace("/,$/","",trim($Addresses));
+
     $smarty = get_smarty();
+    $smarty->assign("LastError",$this->check());
+    $smarty->assign("LastErrorCnt",count($this->check()));
     $smarty->assign("Reason",$this->reason);
     $smarty->assign("Addresses",$Addresses);
     $smarty->assign("Subject",$this->subject);
     $smarty->assign("Days",$this->days);
     $smarty->assign("ID",$this->object_id);
     $smarty->assign("Expert",$this->Expert);
-    return($smarty->fetch(get_template_path("templates/element_vacation.tpl",TRUE,dirname(__FILE__))));
+
+    $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__)));
+    $object= $smarty->fetch(get_template_path("templates/element_vacation.tpl",TRUE,dirname(__FILE__)));
+    $str = preg_replace("/%%OBJECT_CONTENT%%/",$object,$object_container);
+    return($str);
   }
 }