]> git.donarmstrong.com Git - roundcube.git/blobdiff - plugins/managesieve/managesieve.php
Imported Upstream version 0.3.1
[roundcube.git] / plugins / managesieve / managesieve.php
index 21d974da6fe696085376b01b768f13a9c4f9a0f8..0c8c492e4bb4059016d19c4bc7baf3e90f1eceb5 100644 (file)
@@ -7,7 +7,7 @@
  * It's clickable interface which operates on text scripts and communicates
  * with server using managesieve protocol. Adds Filters tab in Settings.
  *
- * @version 1.3
+ * @version 1.7
  * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
  *
  * Configuration (see config.inc.php.dist):
@@ -62,7 +62,7 @@ class managesieve extends rcube_plugin
     // try to connect to managesieve server and to fetch the script
     $this->sieve = new rcube_sieve($_SESSION['username'],
        $this->rc->decrypt($_SESSION['password']), 
-       $this->rc->config->get('managesieve_host', 'localhost'),
+       str_replace('%h', $_SESSION['imap_host'], $this->rc->config->get('managesieve_host', 'localhost')),
        $this->rc->config->get('managesieve_port', 2000),
        $this->rc->config->get('managesieve_usetls', false),
        $this->rc->config->get('managesieve_disabled_extensions'));
@@ -744,6 +744,9 @@ class managesieve extends rcube_plugin
     $a_folders = $this->rc->imap->list_mailboxes();
     $delimiter = $this->rc->imap->get_hierarchy_delimiter();
 
+    // set mbox encoding
+    $mbox_encoding = $this->rc->config->get('managesieve_mbox_encoding', 'UTF7-IMAP'); 
+
     if ($action['type'] == 'fileinto')
       $mailbox = $action['target'];
     else
@@ -758,6 +761,9 @@ class managesieve extends rcube_plugin
       if ($replace_delimiter = $this->rc->config->get('managesieve_replace_delimiter'))
         $utf7folder = str_replace($delimiter, $replace_delimiter, $utf7folder);
     
+      // convert to Sieve implementation encoding
+      $utf7folder = $this->mbox_encode($utf7folder, $mbox_encoding);
+    
       if ($folder_class = rcmail_folder_classname($name))
         $foldername = $this->gettext($folder_class);
       else
@@ -812,6 +818,9 @@ class managesieve extends rcube_plugin
 
   private function check_email($email)
   {
+    if (function_exists('check_email'));
+      return check_email($email);
+
     // Check for invalid characters
     if (preg_match('/[\x00-\x1F\x7F-\xFF]/', $email))
       return false;
@@ -849,6 +858,10 @@ class managesieve extends rcube_plugin
     return false;
   }
  
+  private function mbox_encode($text, $encoding)
+  {
+    return rcube_charset_convert($text, 'UTF7-IMAP', $encoding);
+  }
 }
 
 ?>