From 04009e5ccbcfdee7d0f71f40eb402b94563983f9 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 03 Feb 2015 08:11:49 -0500
Subject: [PATCH] Fix bug in vacation script detection with kolab_master feature enabled but no active script

---
 plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php   |    5 ++++-
 plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php |    4 ++--
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
index 860b40e..d412e17 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php
@@ -2105,7 +2105,10 @@
                     foreach ($rules['actions'] as $action) {
                         if ($action['type'] == 'include' && empty($action['global'])) {
                             $name = preg_replace($filename_regex, '', $action['target']);
-                            $this->active[] = $name;
+                            // make sure the script exist
+                            if (in_array($name, $this->list)) {
+                                $this->active[] = $name;
+                            }
                         }
                     }
                 }
diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
index 3d3db9a..28fd801 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php
@@ -124,7 +124,7 @@
 
     private function vacation_rule()
     {
-        if ($this->script_name === null || !$this->sieve->load($this->script_name)) {
+        if ($this->script_name === false || $this->script_name === null || !$this->sieve->load($this->script_name)) {
             return;
         }
 
@@ -556,7 +556,7 @@
     protected function save_vacation_script($rule)
     {
         // if script does not exist create a new one
-        if ($this->script_name === null) {
+        if ($this->script_name === null || $this->script_name === false) {
             $this->script_name = $this->rc->config->get('managesieve_script_name');
             if (empty($this->script_name)) {
                 $this->script_name = 'roundcube';

--
Gitblit v1.9.1