diff options
| -rw-r--r-- | program/include/rcube_imap.php | 29 | 
1 files changed, 21 insertions, 8 deletions
| diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 710a434f2..cfea18928 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -80,6 +80,7 @@ class rcube_imap      private $db_header_fields = array('idx', 'uid', 'subject', 'from', 'to', 'cc', 'date', 'size');      private $options = array('auth_method' => 'check');      private $host, $user, $pass, $port, $ssl; +    private $caching = false;      /**       * All (additional) headers used (in any way) by Roundcube @@ -3814,16 +3815,28 @@ class rcube_imap      function set_caching($type)      {          if ($type) { -            $rcmail = rcmail::get_instance(); -            $this->cache = $rcmail->get_cache('IMAP', $type); +            $this->caching = true;          }          else {              if ($this->cache)                  $this->cache->close();              $this->cache = null; +            $this->caching = false;          }      } +    /** +     * Getter for IMAP cache object +     */ +    private function get_cache_engine() +    { +        if ($this->caching && !$this->cache) { +            $rcmail = rcmail::get_instance(); +            $this->cache = $rcmail->get_cache('IMAP', $type); +        } + +        return $this->cache; +    }      /**       * Returns cached value @@ -3834,8 +3847,8 @@ class rcube_imap       */      function get_cache($key)      { -        if ($this->cache) { -            return $this->cache->get($key); +        if ($cache = $this->get_cache_engine()) { +            return $cache->get($key);          }      } @@ -3848,8 +3861,8 @@ class rcube_imap       */      function update_cache($key, $data)      { -        if ($this->cache) { -            $this->cache->set($key, $data); +        if ($cache = $this->get_cache_engine()) { +            $cache->set($key, $data);          }      } @@ -3863,8 +3876,8 @@ class rcube_imap       */      function clear_cache($key=null, $prefix_mode=false)      { -        if ($this->cache) { -            $this->cache->remove($key, $prefix_mode); +        if ($cache = $this->get_cache_engine()) { +            $cache->remove($key, $prefix_mode);          }      } | 
