From 1f9c9fea5529b2b2218f7b3f0e09bd804afc89ac Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Wed, 14 Jan 2015 05:36:05 -0500
Subject: [PATCH] Fix bug where actions without if/elseif/else in sieve scripts were skipped

---
 plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php |    7 +++++--
 plugins/managesieve/Changelog                            |    2 ++
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/plugins/managesieve/Changelog b/plugins/managesieve/Changelog
index 3ac7741..13ef577 100644
--- a/plugins/managesieve/Changelog
+++ b/plugins/managesieve/Changelog
@@ -1,3 +1,5 @@
+- Fix bug where actions without if/elseif/else in sieve scripts were skipped
+
 * version 8.1 [2014-12-09]
 -----------------------------------------------------------
 - Added simple API to manage vacation rule
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
index 25016c8..6ed8762 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
@@ -1270,8 +1270,11 @@
         $out .= $hiddenfields->show();
 
         // 'any' flag
-        if (sizeof($scr['tests']) == 1 && $scr['tests'][0]['test'] == 'true' && !$scr['tests'][0]['not'])
+        if ((!isset($this->form) && empty($scr['tests']) && !empty($src))
+            || (sizeof($scr['tests']) == 1 && $scr['tests'][0]['test'] == 'true' && !$scr['tests'][0]['not'])
+        ) {
             $any = true;
+        }
 
         // filter name input
         $field_id = '_name';
@@ -2282,7 +2285,7 @@
         $i      = 1;
 
         foreach ($this->script as $idx => $filter) {
-            if ($filter['type'] != 'if') {
+            if (empty($filter['actions'])) {
                 continue;
             }
             $fname = $filter['name'] ? $filter['name'] : "#$i";

--
Gitblit v1.9.1