alecpl
2009-05-27 7328469f8fa89a8dbf6103f900afaa5dfd511bcb
- Added support for headers lists (coma-separated) in rules


2 files modified
94 ■■■■■ changed files
plugins/managesieve/Changelog 60 ●●●●● patch | view | raw | blame | history
plugins/managesieve/managesieve.php 34 ●●●● patch | view | raw | blame | history
plugins/managesieve/Changelog
@@ -1,59 +1,65 @@
* version 1.1 [2009-05-27]
-----------------------------------------------------------
- Added new icons
- Added support for headers lists (coma-separated) in rules
- Added de_CH localization
*  version 1.0 [2009-05-21]
-----------------------------------------------------------    
Rewritten using plugin API
Added hu_HU localization (Tamas Tevesz)
- Rewritten using plugin API
- Added hu_HU localization (Tamas Tevesz)
*  version beta7 (svn-r2300) [2009-03-01]
-----------------------------------------------------------    
Added SquirrelMail script auto-import (Jonathan Ernst)
Added 'vacation' support (Jonathan Ernst & alec)
Added 'stop' support (Jonathan Ernst)
Added option for extensions disabling (Jonathan Ernst & alec)
Added fi_FI, nl_NL, bg_BG localization
Small style fixes
- Added SquirrelMail script auto-import (Jonathan Ernst)
- Added 'vacation' support (Jonathan Ernst & alec)
- Added 'stop' support (Jonathan Ernst)
- Added option for extensions disabling (Jonathan Ernst & alec)
- Added fi_FI, nl_NL, bg_BG localization
- Small style fixes
* version 0.2-stable1 (svn-r2205) [2009-01-03]
-----------------------------------------------------------    
Fix moving down filter row
Fixes for compressed js files in stable release package
Created patch for svn version r2205
- Fix moving down filter row
- Fixes for compressed js files in stable release package
- Created patch for svn version r2205
* version 0.2-stable [2008-12-31]
-----------------------------------------------------------    
Added ru_RU, fr_FR, zh_CN translation
Fixes for Roundcube 0.2-stable
- Added ru_RU, fr_FR, zh_CN translation
- Fixes for Roundcube 0.2-stable
* version rc0.2beta [2008-09-21]
-----------------------------------------------------------    
Small css fixes for IE
Fixes for Roundcube 0.2-beta
- Small css fixes for IE
- Fixes for Roundcube 0.2-beta
* version beta6 [2008-08-08]
-----------------------------------------------------------    
Added de_DE translation
Fix for Roundcube r1634
- Added de_DE translation
- Fix for Roundcube r1634
* version beta5 [2008-06-10]
-----------------------------------------------------------    
Fixed 'exists' operators
Fixed 'not*' operators for custom headers
Fixed filters deleting
- Fixed 'exists' operators
- Fixed 'not*' operators for custom headers
- Fixed filters deleting
* version beta4 [2008-06-09]
-----------------------------------------------------------    
Fix for Roundcube r1490
- Fix for Roundcube r1490
* version beta3 [2008-05-22]
-----------------------------------------------------------    
Fixed textarea error class setting
Added pagetitle setting
Added option 'managesieve_replace_delimiter'
Fixed errors on IE (still need some css fixes)
- Fixed textarea error class setting
- Added pagetitle setting
- Added option 'managesieve_replace_delimiter'
- Fixed errors on IE (still need some css fixes)
    
* version beta2 [2008-05-20]
-----------------------------------------------------------    
Use 'if' only for first filter and 'elsif' for the rest
- Use 'if' only for first filter and 'elsif' for the rest
* version beta1 [2008-05-15]
-----------------------------------------------------------    
Initial version for Roundcube r1388.
- Initial version for Roundcube r1388.
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.0
 * @version 1.1
 * @author Aleksander 'A.L.E.C' Machniak <alec@alec.pl>
 *
 * Configuration (main.inc.php):
@@ -308,7 +308,7 @@
        $this->errors['tests'][$i]['sizetarget'] = $this->gettext('wrongformat');
          break;
        case '...':
              $cust_header = $this->strip_value($cust_headers[$idx]);
              $cust_header = $headers = $this->strip_value($cust_headers[$idx]);
              if(preg_match('/^not/', $op))
        $this->form['tests'][$i]['not'] = true;
@@ -316,8 +316,20 @@
              if ($cust_header == '')
            $this->errors['tests'][$i]['header'] = $this->gettext('cannotbeempty');
              elseif (!preg_match('/^[a-z0-9-]+$/i', $cust_header))
              else {
            $headers = preg_split('/[\s,]+/', $cust_header, -1, PREG_SPLIT_NO_EMPTY);
        if (!count($headers))
              $this->errors['tests'][$i]['header'] = $this->gettext('cannotbeempty');
        else {
          foreach ($headers as $hr)
            if (!preg_match('/^[a-z0-9-]+$/i', $hr))
            $this->errors['tests'][$i]['header'] = $this->gettext('forbiddenchars');
            }
          }
          if (empty($this->errors['tests'][$i]['header']))
        $cust_header = $headers;
              if ($type == 'exists')
              {
@@ -599,9 +611,11 @@
    // TODO: list arguments
    if ((isset($rule['test']) && $rule['test'] == 'header') && in_array($rule['arg1'], $this->headers))
    if ((isset($rule['test']) && $rule['test'] == 'header')
    && !is_array($rule['arg1']) && in_array($rule['arg1'], $this->headers))
      $out .= $select_header->show($rule['arg1']);
    elseif ((isset($rule['test']) && $rule['test'] == 'exists') && in_array($rule['arg'], $this->headers))
    elseif ((isset($rule['test']) && $rule['test'] == 'exists')
    && !is_array($rule['arg']) && in_array($rule['arg'], $this->headers))
      $out .= $select_header->show($rule['arg']);
    elseif (isset($rule['test']) && $rule['test'] == 'size')
      $out .= $select_header->show('size');
@@ -612,10 +626,12 @@
    $out .= '</td><td class="rowtargets">';
    if ((isset($rule['test']) && $rule['test'] == 'header') && !in_array($rule['arg1'], $this->headers))
      $custom = $rule['arg1'];
    elseif ((isset($rule['test']) && $rule['test'] == 'exists') && !in_array($rule['arg'], $this->headers))
      $custom = $rule['arg'];
    if ((isset($rule['test']) && $rule['test'] == 'header')
    && (is_array($rule['arg1']) || !in_array($rule['arg1'], $this->headers)))
      $custom = is_array($rule['arg1']) ? implode(', ', $rule['arg1']) : $rule['arg1'];
    elseif ((isset($rule['test']) && $rule['test'] == 'exists')
    && (is_array($rule['arg']) || !in_array($rule['arg'], $this->headers)))
      $custom = is_array($rule['arg']) ? implode(', ', $rule['arg']) : $rule['arg'];
    
    $out .= '<div id="custom_header' .$id. '" style="display:' .(isset($custom) ? 'inline' : 'none'). '">
    <input type="text" name="_custom_header[]" '. $this->error_class($id, 'test', 'header')