diff options
author | Aleksander Machniak <alec@alec.pl> | 2015-03-12 06:31:22 -0400 |
---|---|---|
committer | Aleksander Machniak <alec@alec.pl> | 2015-03-12 06:31:22 -0400 |
commit | 05b11f7ef0dd100110ee728770e3fa157b994ed0 (patch) | |
tree | 1e3029d1a85d783549ac77877fe50ddc05c3fdb7 /plugins/managesieve/lib/Roundcube | |
parent | e2fb34028980910e006f09b4fd93c4172f79b306 (diff) |
Fix handling of header test with one-element array as header name
Diffstat (limited to 'plugins/managesieve/lib/Roundcube')
-rw-r--r-- | plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php index 98c4c952c..2f2791d30 100644 --- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php +++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php @@ -63,7 +63,7 @@ class rcube_sieve_engine 1 => 'notifyimportancehigh' ); - const VERSION = '8.2'; + const VERSION = '8.3'; const PROGNAME = 'Roundcube (Managesieve)'; const PORT = 4190; @@ -1394,19 +1394,21 @@ class rcube_sieve_engine } if (isset($rule['test'])) { - if (in_array($rule['test'], array('header', 'address', 'envelope')) - && !is_array($rule['arg1']) - && ($header = strtolower($rule['arg1'])) - && isset($this->headers[$header]) - ) { - $test = $header; + if (in_array($rule['test'], array('header', 'address', 'envelope'))) { + if (is_array($rule['arg1']) && count($rule['arg1']) == 1) { + $rule['arg1'] = $rule['arg1'][0]; + } + + $matches = ($header = strtolower($rule['arg1'])) && isset($this->headers[$header]); + $test = $matches ? $header : '...'; } - else if ($rule['test'] == 'exists' - && !is_array($rule['arg']) - && ($header = strtolower($rule['arg'])) - && isset($this->headers[$header]) - ) { - $test = $header; + else if ($rule['test'] == 'exists') { + if (is_array($rule['arg']) && count($rule['arg']) == 1) { + $rule['arg'] = $rule['arg'][0]; + } + + $matches = ($header = strtolower($rule['arg'])) && isset($this->headers[$header]); + $test = $matches ? $header : '...'; } else if (in_array($rule['test'], array('size', 'body', 'date', 'currentdate'))) { $test = $rule['test']; |