Code

Readded 100% width
[gosa.git] / gosa-plugins / mail / personal / mail / class_mail-methods-cyrus.inc
index 3f6192fe1111c434f7e923a8c5ca06b329e57efe..97971a41574c20230f71e999cb828f680ea5a64b 100644 (file)
@@ -247,10 +247,28 @@ class mailMethodCyrus extends mailMethod{
       if ($list === FALSE){
         @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>" , 
           "<b>IMAP: Add/Update account</b> on server :".$this->MailServer);
-        if (!imap_createmailbox($this->imap_handle, $cfg["connect"]. $this->account_id)){
+        if (!imap_createmailbox($this->imap_handle, $cfg["connect"].$this->account_id)){
           $this->error = imap_last_error();
           return(FALSE);
         }
+
+        /* Autocreate configured default folders */ 
+        $folders= $this->config->get_cfg_value("cyrusAutocreateFolders", null);
+        if ($folders) {
+          $foldersToCreate= explode(",", $folders);
+          $cyrus_delim= $this->cyrusUseSlashes?"/":".";
+
+          // Walk thru list of specified folders
+          foreach ($foldersToCreate as $folder) {
+            @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__, "<b>".$this->account_id."</b>" , 
+              "<b>IMAP: Add/Update account folder ".$folder."</b> on server :".$this->MailServer);
+            if(!imap_createmailbox($this->imap_handle, $cfg["connect"].$this->account_id.$cyrus_delim.$folder)) {
+              $this->error= imap_last_error();
+              return(FALSE);
+            }
+          }
+
+        }
       }
     }
     return(TRUE);
@@ -270,9 +288,16 @@ class mailMethodCyrus extends mailMethod{
 
     $cfg= $this->ServerList[$this->MailServer];
     @imap_setacl ($this->imap_handle, $this->account_id, $cfg["admin"], "lrswipcda");
-    if (!imap_deletemailbox($this->imap_handle, $cfg["connect"].$this->account_id)){
-      $this->error = imap_last_error();
-      return (FALSE);
+
+    if ($this->config->get_cfg_value("cyrusDeleteMailbox", "true") == "true"){
+      if (!imap_deletemailbox($this->imap_handle, $cfg["connect"].$this->account_id)){
+        $this->error = imap_last_error();
+        return (FALSE);
+      }
+    } else{ 
+      msg_dialog::display(_("Mail info"),
+        sprintf(_("LDAP entry has been removed but cyrus mailbox (%s) is kept.\nPlease delete it manually!"),
+        $this->account_id), INFO_DIALOG);
     }
     return (TRUE);
   }
@@ -437,9 +462,9 @@ class mailMethodCyrus extends mailMethod{
     // Check file integrity 
     $files = array();
     foreach(array("sieve-header.txt","sieve-spam.txt","sieve-mailsize.txt","sieve-vacation.txt","sieve-discard.txt") as $file){
-      if(!file_exists(CONFIG_DIR."/mail/".$file) || ! is_readable(CONFIG_DIR."/mail/".$file)){
-        $files[] = CONFIG_DIR."/mail/".$file;
-        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__ , CONFIG_DIR."/mail/".$file,
+      if(!file_exists(CONFIG_DIR."/".$file) || ! is_readable(CONFIG_DIR."/".$file)){
+        $files[] = CONFIG_DIR."/".$file;
+        @DEBUG (DEBUG_MAIL, __LINE__, __FUNCTION__, __FILE__ , CONFIG_DIR."/".$file,
             "<b>Sieve template missing, please locate and move the template file: </b>");
       }
     }
@@ -527,14 +552,14 @@ class mailMethodCyrus extends mailMethod{
         is_integer(strpos($gosaMailDeliveryMode, "V")) ||
         is_integer(strpos($gosaMailDeliveryMode, "S"))){
 
-      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/mail/sieve-header.txt")));
+      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-header.txt")));
       eval ("\$script.=\"$text\";");
     }
 
     /* Add anti-spam code */
     if (is_integer(strpos($gosaMailDeliveryMode, "S"))){
       $spambox= $gosaSpamMailbox;
-      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/mail/sieve-spam.txt")));
+      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-spam.txt")));
       eval ("\$script.=\"$text\";");
     }
 
@@ -542,7 +567,7 @@ class mailMethodCyrus extends mailMethod{
        adjustable through GOsa. */
     if (is_integer(strpos($gosaMailDeliveryMode, "R"))){
       $maxsize= $gosaMailMaxSize;
-      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/mail/sieve-mailsize.txt")));
+      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-mailsize.txt")));
       eval ("\$script.=\"$text\";");
     }
 
@@ -557,13 +582,13 @@ class mailMethodCyrus extends mailMethod{
         $addrlist .= ", \"$val\"";
       }
       $vacmsg= $gosaVacationMessage;
-      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/mail/sieve-vacation.txt")));
+      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-vacation.txt")));
       eval ("\$script.=\"$text\";");
     }
 
     /* If no local delivery is wanted, tell the script to discard the mail */
     if (!is_integer(strpos($gosaMailDeliveryMode, "L"))){
-      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/mail/sieve-discard.txt")));
+      $text= preg_replace('/"/', '\\"', implode ("", file(CONFIG_DIR."/sieve-discard.txt")));
       eval ("\$script.=\"$text\";");
     }