From 613f96839cbf63d475a4f56cb1841647bb23ad0c Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 26 Aug 2014 01:24:21 -0400
Subject: [PATCH] Added simple API to manage vacation rule

---
 plugins/managesieve/lib/Roundcube/rcube_sieve.php |   76 ++++++++++++++++++++------------------
 1 files changed, 40 insertions(+), 36 deletions(-)

diff --git a/plugins/managesieve/lib/Roundcube/rcube_sieve.php b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
index a8e29d7..389c850 100644
--- a/plugins/managesieve/lib/Roundcube/rcube_sieve.php
+++ b/plugins/managesieve/lib/Roundcube/rcube_sieve.php
@@ -22,17 +22,6 @@
 
 // Managesieve Protocol: RFC5804
 
-define('SIEVE_ERROR_CONNECTION', 1);
-define('SIEVE_ERROR_LOGIN', 2);
-define('SIEVE_ERROR_NOT_EXISTS', 3);    // script not exists
-define('SIEVE_ERROR_INSTALL', 4);       // script installation
-define('SIEVE_ERROR_ACTIVATE', 5);      // script activation
-define('SIEVE_ERROR_DELETE', 6);        // script deletion
-define('SIEVE_ERROR_INTERNAL', 7);      // internal error
-define('SIEVE_ERROR_DEACTIVATE', 8);    // script activation
-define('SIEVE_ERROR_OTHER', 255);       // other/unknown error
-
-
 class rcube_sieve
 {
     private $sieve;                 // Net_Sieve object
@@ -42,6 +31,16 @@
     public $script;                 // rcube_sieve_script object
     public $current;                // name of currently loaded script
     private $exts;                  // array of supported extensions
+
+    const ERROR_CONNECTION = 1;
+    const ERROR_LOGIN      = 2;
+    const ERROR_NOT_EXISTS = 3;    // script not exists
+    const ERROR_INSTALL    = 4;    // script installation
+    const ERROR_ACTIVATE   = 5;    // script activation
+    const ERROR_DELETE     = 6;    // script deletion
+    const ERROR_INTERNAL   = 7;    // internal error
+    const ERROR_DEACTIVATE = 8;    // script activation
+    const ERROR_OTHER      = 255;  // other/unknown error
 
 
     /**
@@ -70,7 +69,7 @@
         }
 
         if (PEAR::isError($this->sieve->connect($host, $port, $options, $usetls))) {
-            return $this->_set_error(SIEVE_ERROR_CONNECTION);
+            return $this->_set_error(self::ERROR_CONNECTION);
         }
 
         if (!empty($auth_cid)) {
@@ -82,7 +81,7 @@
         if (PEAR::isError($this->sieve->login($username, $password,
             $auth_type ? strtoupper($auth_type) : null, $authz))
         ) {
-            return $this->_set_error(SIEVE_ERROR_LOGIN);
+            return $this->_set_error(self::ERROR_LOGIN);
         }
 
         $this->exts = $this->get_extensions();
@@ -117,10 +116,10 @@
     public function save($name = null)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (!$this->script)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (!$name)
             $name = $this->current;
@@ -131,7 +130,7 @@
             $script = '/* empty script */';
 
         if (PEAR::isError($this->sieve->installScript($name, $script)))
-            return $this->_set_error(SIEVE_ERROR_INSTALL);
+            return $this->_set_error(self::ERROR_INSTALL);
 
         return true;
     }
@@ -142,13 +141,13 @@
     public function save_script($name, $content = null)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (!$content)
             $content = '/* empty script */';
 
         if (PEAR::isError($this->sieve->installScript($name, $content)))
-            return $this->_set_error(SIEVE_ERROR_INSTALL);
+            return $this->_set_error(self::ERROR_INSTALL);
 
         return true;
     }
@@ -159,13 +158,13 @@
     public function activate($name = null)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (!$name)
             $name = $this->current;
 
         if (PEAR::isError($this->sieve->setActive($name)))
-            return $this->_set_error(SIEVE_ERROR_ACTIVATE);
+            return $this->_set_error(self::ERROR_ACTIVATE);
 
         return true;
     }
@@ -176,10 +175,10 @@
     public function deactivate()
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (PEAR::isError($this->sieve->setActive('')))
-            return $this->_set_error(SIEVE_ERROR_DEACTIVATE);
+            return $this->_set_error(self::ERROR_DEACTIVATE);
 
         return true;
     }
@@ -190,7 +189,7 @@
     public function remove($name = null)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if (!$name)
             $name = $this->current;
@@ -198,10 +197,10 @@
         // script must be deactivated first
         if ($name == $this->sieve->getActive())
             if (PEAR::isError($this->sieve->setActive('')))
-                return $this->_set_error(SIEVE_ERROR_DELETE);
+                return $this->_set_error(self::ERROR_DELETE);
 
         if (PEAR::isError($this->sieve->removeScript($name)))
-            return $this->_set_error(SIEVE_ERROR_DELETE);
+            return $this->_set_error(self::ERROR_DELETE);
 
         if ($name == $this->current)
             $this->current = null;
@@ -218,9 +217,14 @@
             return $this->exts;
 
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         $ext = $this->sieve->getExtensions();
+
+        if (PEAR::isError($ext)) {
+            return array();
+        }
+
         // we're working on lower-cased names
         $ext = array_map('strtolower', (array) $ext);
 
@@ -242,12 +246,12 @@
         if (!$this->list) {
 
             if (!$this->sieve)
-                return $this->_set_error(SIEVE_ERROR_INTERNAL);
+                return $this->_set_error(self::ERROR_INTERNAL);
 
             $list = $this->sieve->listScripts();
 
             if (PEAR::isError($list))
-                return $this->_set_error(SIEVE_ERROR_OTHER);
+                return $this->_set_error(self::ERROR_OTHER);
 
             $this->list = $list;
         }
@@ -261,7 +265,7 @@
     public function get_active()
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         return $this->sieve->getActive();
     }
@@ -272,7 +276,7 @@
     public function load($name)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if ($this->current == $name)
             return true;
@@ -280,7 +284,7 @@
         $script = $this->sieve->getScript($name);
 
         if (PEAR::isError($script))
-            return $this->_set_error(SIEVE_ERROR_OTHER);
+            return $this->_set_error(self::ERROR_OTHER);
 
         // try to parse from Roundcube format
         $this->script = $this->_parse($script);
@@ -296,7 +300,7 @@
     public function load_script($script)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         // try to parse from Roundcube format
         $this->script = $this->_parse($script);
@@ -341,12 +345,12 @@
     public function get_script($name)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         $content = $this->sieve->getScript($name);
 
         if (PEAR::isError($content))
-            return $this->_set_error(SIEVE_ERROR_OTHER);
+            return $this->_set_error(self::ERROR_OTHER);
 
         return $content;
     }
@@ -357,13 +361,13 @@
     public function copy($name, $copy)
     {
         if (!$this->sieve)
-            return $this->_set_error(SIEVE_ERROR_INTERNAL);
+            return $this->_set_error(self::ERROR_INTERNAL);
 
         if ($copy) {
             $content = $this->sieve->getScript($copy);
 
             if (PEAR::isError($content))
-                return $this->_set_error(SIEVE_ERROR_OTHER);
+                return $this->_set_error(self::ERROR_OTHER);
         }
 
         return $this->save_script($name, $content);

--
Gitblit v1.9.1