From 6380c571c1ccbf127ce0262532a30b3dcc7e0347 Mon Sep 17 00:00:00 2001 From: alec Date: Mon, 10 Oct 2011 08:05:48 +0000 Subject: - Support KEP:14's commented variables git-svn-id: https://svn.roundcube.net/trunk@5325 208e9e7b-5314-0410-a742-e7e81cd9613c --- plugins/managesieve/lib/rcube_sieve_script.php | 15 +++++++++++---- plugins/managesieve/tests/parser_kep14.phpt | 19 +++++++++++++++++++ 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 plugins/managesieve/tests/parser_kep14.phpt (limited to 'plugins') diff --git a/plugins/managesieve/lib/rcube_sieve_script.php b/plugins/managesieve/lib/rcube_sieve_script.php index e303f2779..8fc0e5545 100644 --- a/plugins/managesieve/lib/rcube_sieve_script.php +++ b/plugins/managesieve/lib/rcube_sieve_script.php @@ -181,10 +181,13 @@ class rcube_sieve_script $exts = array(); $idx = 0; - if (!empty($this->vars) && in_array('variables', (array)$this->capabilities)) { - array_push($exts, 'variables'); + if (!empty($this->vars)) { + if (in_array('variables', (array)$this->capabilities)) { + $has_vars = true; + array_push($exts, 'variables'); + } foreach ($this->vars as $var) { - $output .= 'set '; + $output .= (empty($has_vars) ? '# ' : '') . 'set '; foreach (array_diff(array_keys($var), array('name', 'value')) as $opt) { $output .= ":$opt "; } @@ -411,7 +414,7 @@ class rcube_sieve_script $rule = array(); // Comments - while ($script[0] == '#') { + while (!empty($script) && $script[0] == '#') { $endl = strpos($script, "\n"); $line = $endl ? substr($script, 0, $endl) : $script; @@ -419,6 +422,10 @@ class rcube_sieve_script if (preg_match('/^# rule:\[(.*)\]/', $line, $matches)) { $rulename = $matches[1]; } + // KEP:14 variables + else if (preg_match('/^# set "([^"]+)" "([^"]+)";$/', $line, $matches)) { + $this->set_var($matches[1], $matches[2]); + } // Horde-Ingo format else if (!empty($options['format']) && $options['format'] == 'INGO' && preg_match('/^# (.*)/', $line, $matches) diff --git a/plugins/managesieve/tests/parser_kep14.phpt b/plugins/managesieve/tests/parser_kep14.phpt new file mode 100644 index 000000000..9be4eba04 --- /dev/null +++ b/plugins/managesieve/tests/parser_kep14.phpt @@ -0,0 +1,19 @@ +--TEST-- +Test of Kolab's KEP:14 implementation +--SKIPIF-- +--FILE-- +as_text(); + +?> +--EXPECT-- +# set "editor" "Roundcube"; +# set "editor_version" "123"; -- cgit v1.2.3