From 76c4c4c531f38b9ab5a8cd0e49cc34c91260c354 Mon Sep 17 00:00:00 2001 From: hickert Date: Thu, 8 Mar 2007 08:15:43 +0000 Subject: [PATCH] Added remove and activate script button git-svn-id: https://oss.gonicus.de/repositories/gosa/trunk@5758 594d385d-05f5-0310-b6e9-bd551577e9d8 --- include/sieve/class_sieveManagement.inc | 120 ++++++++++++++++++++-- include/sieve/templates/remove_script.tpl | 17 +++ 2 files changed, 127 insertions(+), 10 deletions(-) create mode 100644 include/sieve/templates/remove_script.tpl diff --git a/include/sieve/class_sieveManagement.inc b/include/sieve/class_sieveManagement.inc index a97652fda..4784011de 100644 --- a/include/sieve/class_sieveManagement.inc +++ b/include/sieve/class_sieveManagement.inc @@ -34,7 +34,7 @@ class sieveManagement extends plugin var $current_script = -1; var $current_handler = NULL; - + var $script_to_delete =-1; var $sieve_handle = NULL; @@ -65,7 +65,16 @@ class sieveManagement extends plugin if($sieve->sieve_listscripts()){ if (is_array($sieve->response)){ foreach($sieve->response as $key => $name){ - $this->scripts[$key]['NAME'] = $name; + + $data = array(); + $data['NAME'] = $name; + + if($key == "ACTIVE" && $key === "ACTIVE"){ + $data['ACTIVE'] = TRUE; + }else{ + $data['ACTIVE'] = FALSE; + } + $this->scripts[] = $data; } } } @@ -110,6 +119,82 @@ class sieveManagement extends plugin $this->current_script = $script; $this->current_handler = $this->scripts[$script]['PARSER']; } + if(preg_match("/^delscript_/",$name) && $once && !$this->current_handler){ + $script = preg_replace("/^delscript_/","",$name); + $script = preg_replace("/_(x|y)/","",$script); + $once = FALSE; + + $this->script_to_delete = $script; + } + if(preg_match("/^active_script_/",$name) && $once && !$this->current_handler){ + $script = preg_replace("/^active_script_/","",$name); + $script = preg_replace("/_(x|y)/","",$script); + $once = FALSE; + + /* Connect to sieve class and try to get all available sieve scripts */ + $cfg= $this->config->data['SERVERS']['IMAP'][$this->parent->gosaMailServer]; + $this->sieve_handle= + new sieve( $cfg["sieve_server"], + $cfg["sieve_port"], + $this->parent->mail, + $cfg["password"], + $cfg["admin"]); + + if (!$this->sieve_handle->sieve_login()){ + print_red(sprintf(_("Can't log into SIEVE server. Server says '%s'."),to_string($this->sieve_handle->error_raw))); + return; + } + + if(!$this->sieve_handle->sieve_setactivescript($this->scripts[$script]['NAME'])){ + print_red(sprintf(_("Can't activate sieve script on server. Server says '%s'."),to_string($this->sieve_handle->error_raw))); + }else{ + + foreach($this->scripts as $key => $data){ + + if($key == $script){ + $this->scripts[$key]['ACTIVE'] = TRUE; + }else{ + $this->scripts[$key]['ACTIVE'] = FALSE; + } + } + } + } + } + + if(isset($_POST['delete_cancel'])){ + $this->script_to_delete = -1; + } + + if(isset($_POST['delete_script_confirm'])){ + + /* Connect to sieve class and try to get all available sieve scripts */ + $cfg= $this->config->data['SERVERS']['IMAP'][$this->parent->gosaMailServer]; + $this->sieve_handle= + new sieve( $cfg["sieve_server"], + $cfg["sieve_port"], + $this->parent->mail, + $cfg["password"], + $cfg["admin"]); + if (!$this->sieve_handle->sieve_login()){ + print_red(sprintf(_("Can't log into SIEVE server. Server says '%s'."),to_string($this->sieve_handle->error_raw))); + return; + } + + if(!$this->sieve_handle->sieve_deletescript($this->scripts[$this->script_to_delete]['NAME'])){ + print_red(sprintf(_("Can't remove sieve script from server. Server says '%s'."),to_string($this->sieve_handle->error_raw))); + }else{ + unset($this->scripts[$this->script_to_delete]); + } + $this->script_to_delete = -1; + } + + if($this->script_to_delete != -1){ + $smarty = get_smarty(); + $smarty->assign("Warning", + sprintf(_("You are going to remove the sieve script '%s' from your mail server."), + $this->scripts[$this->script_to_delete]['NAME'])); + + return($smarty->fetch(get_template_path("templates/remove_script.tpl",TRUE,dirname(__FILE__)))); } /* Abort saving */ @@ -141,21 +226,36 @@ class sieveManagement extends plugin foreach($this->scripts as $key => $script){ $edited = $script['EDITED']; - - $field1 = array("string" => $script['NAME']); - $field2 = array("string" => $script['STATUS']); - $field3 = array("string" => _("Script length")." : ".strlen($script['SCRIPT'])); + $active = $script['ACTIVE']; + + $field1 = array("string" => " ", + "attach" => "style='width:20px;'"); + if($active){ + $field1 = array("string" => ""._("Active")."", + "attach" => "style='width:20px;'"); + } + $field2 = array("string" => $script['NAME']); + $field3 = array("string" => $script['STATUS']); + $field4 = array("string" => _("Script length")." : ".strlen($script['SCRIPT'])); if($edited){ - $field4 = array("string" => ""._("Edited")."", + $field5 = array("string" => ""._("Edited")."", "attach" => "style='width:30px;'"); }else{ - $field4 = array("string" => "", + $field5 = array("string" => "", "attach" => "style='width:30px;'"); } - $field5 = array("string" => ""); - $List ->AddEntry(array($field1,$field2,$field3,$field4,$field5)); + if($active){ + $field6 = array("string" => " ". + "". + ""); + }else{ + $field6 = array("string" => "". + "". + ""); + } + $List ->AddEntry(array($field1,$field2,$field3,$field4,$field5,$field6)); } $display ="

Sieve script management

"; diff --git a/include/sieve/templates/remove_script.tpl b/include/sieve/templates/remove_script.tpl new file mode 100644 index 000000000..5bb5b49ae --- /dev/null +++ b/include/sieve/templates/remove_script.tpl @@ -0,0 +1,17 @@ +
+ {t}Warning{/t} +
+

+ {$Warning}
+ {t}Please double check if your really want to do this since there is no way for GOsa to get your data back.{/t} +

+ +

+ {t}Best thing to do before performing this action would be to save the current script in a file. So - if you've done so - press 'Delete' to continue or 'Cancel' to abort.{/t} +

+ +

+ +   + +

-- 2.30.2