From 05b11f7ef0dd100110ee728770e3fa157b994ed0 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Thu, 12 Mar 2015 06:31:22 -0400 Subject: Fix handling of header test with one-element array as header name --- plugins/managesieve/Changelog | 3 +++ plugins/managesieve/composer.json | 2 +- .../lib/Roundcube/rcube_sieve_engine.php | 28 ++++++++++++---------- 3 files changed, 19 insertions(+), 14 deletions(-) (limited to 'plugins') diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog index 8ce63c811..9291d550b 100644 --- a/plugins/managesieve/Changelog +++ b/plugins/managesieve/Changelog @@ -1,4 +1,7 @@ +* version 8.3 [2015-03-12] +----------------------------------------------------------- - Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet +- Fix handling of header test with one-element array as header name * version 8.2 [2015-01-14] ----------------------------------------------------------- diff --git a/plugins/managesieve/composer.json b/plugins/managesieve/composer.json index 6d640da08..529167f23 100644 --- a/plugins/managesieve/composer.json +++ b/plugins/managesieve/composer.json @@ -3,7 +3,7 @@ "type": "roundcube-plugin", "description": "Adds a possibility to manage Sieve scripts (incoming mail filters). It's clickable interface which operates on text scripts and communicates with server using managesieve protocol. Adds Filters tab in Settings.", "license": "GPLv3+", - "version": "8.2", + "version": "8.3", "authors": [ { "name": "Aleksander Machniak", 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']; -- cgit v1.2.3