X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=include%2Fsieve%2Fclass_sieveElement_Fileinto.inc;h=f357d37d96d961bd4e1ea2065d8468deb9f985b8;hb=0d96e184dc6107bff6f32f24b4cda64ddd01c35a;hp=16b8c26d735d4b240ca1fc7ad098e63876f90c32;hpb=e058a5a533ea6f2158204a5391f8138fe2a87f1d;p=gosa.git diff --git a/include/sieve/class_sieveElement_Fileinto.inc b/include/sieve/class_sieveElement_Fileinto.inc index 16b8c26d7..f357d37d9 100644 --- a/include/sieve/class_sieveElement_Fileinto.inc +++ b/include/sieve/class_sieveElement_Fileinto.inc @@ -2,58 +2,88 @@ class sieve_fileinto { - var $data = array(); + var $data = ""; var $object_id= -1; var $options = array(); + var $parent = NULL; + var $user_mode= FALSE; function save_object() { $mbs = $this->get_mail_boxes(); if(isset($_POST['fileinto_'.$this->object_id])){ - $mb = $_POST['fileinto_'.$this->object_id]; + $mb = stripslashes($_POST['fileinto_'.$this->object_id]); - if(isset($mbs[$mb])) { - $this->data[0] = $mb; + /* Depending on the user mode we only accept + * existing mailboxes + */ + if($this->user_mode){ + $this->data = $mb; + }else{ + if(in_array_ics($mb,$mbs)){ + $this->data = $mb; + } + } + + /* Check Mode */ + if(isset($_POST['user_mode_'.$this->object_id])){ + $this->user_mode = !$this->user_mode; } } } - function sieve_fileinto($data,$object_id) + function sieve_fileinto($data,$object_id,$parent) { $this->object_id = $object_id; + $this->parent = $parent; + $this->parent->add_require("fileinto"); + $mbs = $this->get_mail_boxes(); + + /* Set the default mailbox */ if($data == NULL){ - $data = array('ELEMENTS' => array(array('class' => "quoted-string" ,"text" => _("")))); + $data = array('ELEMENTS' => array(array('class' => "quoted-string" ,"text" => $mbs[key($mbs)]))); } - foreach($data['ELEMENTS'] as $node ){ - if(in_array($node['class'],array("quoted-string","text"))){ - $this->data[] = preg_replace("/\"/","",$node['text']); + /* Load element contents, should normaly be only one string + * but if we found more than one, just append the following strings. + */ + for($i = 0 ; $i < count($data['ELEMENTS']) ; $i++){ + $tmp = sieve_get_strings($data['ELEMENTS'],$i); + $i = $i + $tmp['OFFSET']; + foreach($tmp['STRINGS'] as $str){ + $this->data .= $str; } } + + /* Set user mode to active, so we are able to insert + * the destination mail folder manually + */ + if(!in_array_ics($this->data,$mbs)){ + $this->user_mode = TRUE; + } } function get_sieve_script_part() { $tmp = ""; - foreach($this->data as $dat){ - $tmp.= "\"".$dat."\", "; - } + $tmp.= "\"".$this->data."\", "; $tmp = preg_replace("/,$/","",trim($tmp)); $tmp = preg_replace ("/\"\"/","\"",$tmp); - return("fileinto ".$tmp.";\n"); + return("fileinto ".$tmp.";"); } function execute() { $smarty = get_smarty(); - $smarty->assign("Selected",$this->data[0]); + $smarty->assign("Selected",htmlentities($this->data)); $smarty->assign("Boxes", $this->get_mail_boxes()); + $smarty->assign("User_Mode", $this->user_mode); $smarty->assign("ID", $this->object_id); $object_container = $smarty->fetch(get_template_path("templates/object_container.tpl",TRUE,dirname(__FILE__))); $object= $smarty->fetch(get_template_path("templates/element_fileinto.tpl",TRUE,dirname(__FILE__))); - $str = preg_replace("/%%OBJECT_CONTENT%%/",$object,$object_container); + $str = preg_replace("/%%OBJECT_CONTENT%%/",addcslashes($object,"\\"),$object_container); return($str); } @@ -65,7 +95,8 @@ class sieve_fileinto function get_mail_boxes() { - return(array("not"=>"not","impplemented/yet"=>"impplemented/yet")); + $list = $this->parent->parent->parent->parent->mailboxList; + return($list); } }