Aleksander Machniak
2015-03-12 00a1759129ff756867a74b61561ad85e97f71bc8
Fix handling of header test with one-element array as header name
3 files modified
33 ■■■■■ changed files
plugins/managesieve/Changelog 3 ●●●●● patch | view | raw | blame | history
plugins/managesieve/composer.json 2 ●●● patch | view | raw | blame | history
plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php 28 ●●●● patch | view | raw | blame | history
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]
-----------------------------------------------------------
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",
plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
@@ -63,7 +63,7 @@
        1 => 'notifyimportancehigh'
    );
    const VERSION  = '8.2';
    const VERSION  = '8.3';
    const PROGNAME = 'Roundcube (Managesieve)';
    const PORT     = 4190;
@@ -1394,19 +1394,21 @@
        }
        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'];