alecpl
2009-09-04 36969ee7d90307eeee55274b2d281cc497b182e7
- managesieve: added 'managesieve_mbox_encoding' option


3 files modified
22 ■■■■■ changed files
plugins/managesieve/Changelog 5 ●●●●● patch | view | raw | blame | history
plugins/managesieve/config.inc.php.dist 5 ●●●●● patch | view | raw | blame | history
plugins/managesieve/managesieve.php 12 ●●●●● patch | view | raw | blame | history
plugins/managesieve/Changelog
@@ -1,3 +1,8 @@
* version 1.5 [2009-09-04]
-----------------------------------------------------------
- Added es_ES, ua_UA localizations
- Added 'managesieve_mbox_encoding' option
* version 1.4 [2009-07-29]
-----------------------------------------------------------
- Updated PEAR::Net_Sieve to 1.1.7
plugins/managesieve/config.inc.php.dist
@@ -14,6 +14,11 @@
// default contents of filters script (eg. default spam filter)
$rcmail_config['managesieve_default'] = '/etc/dovecot/sieve/global';
// Sieve RFC says that we should use UTF-8 endcoding for mailbox names,
// but some implementations does not covert UTF-8 to modified UTF-7.
// Defaults to UTF7-IMAP for backward compatybility
$rcmail_config['managesieve_mbox_encoding'] = 'UTF7-IMAP';
// I need this because my dovecot (with listescape plugin) uses
// ':' delimiter, but creates folders with dot delimiter
$rcmail_config['managesieve_replace_delimiter'] = '';
plugins/managesieve/managesieve.php
@@ -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.5
 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
 *
 * Configuration (see config.inc.php.dist):
@@ -744,6 +744,9 @@
    $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
@@ -757,6 +760,9 @@
    
      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);
@@ -849,6 +855,10 @@
    return false;
  }
 
  private function mbox_encode($text, $encoding)
  {
    return rcube_charset_convert($text, 'UTF7-IMAP', $encoding);
  }
}
?>