diff options
Diffstat (limited to 'program/include/rcmail.php')
-rw-r--r-- | program/include/rcmail.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/program/include/rcmail.php b/program/include/rcmail.php index 7f9d7af06..e684a15bb 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -2011,4 +2011,35 @@ class rcmail extends rcube { return $this->storage_connect(); } + + /** + * Connect to the mail storage server with stored session data + * + * @return bool True on success, False on error + */ + public function storage_connect() + { + $storage = $this->get_storage(); + + if ($_SESSION['storage_host'] && !$storage->is_connected()) { + $host = $_SESSION['storage_host']; + $user = $_SESSION['username']; + $port = $_SESSION['storage_port']; + $ssl = $_SESSION['storage_ssl']; + $pass = $this->decrypt($_SESSION['password']); + + if (!$storage->connect($host, $user, $pass, $port, $ssl)) { + if (is_object($this->output)) { + $error = $storage->get_error_code() == -1 ? 'storageerror' : 'sessionerror'; + $this->output->show_message($error, 'error'); + } + } + else { + $this->set_storage_prop(); + return $storage->is_connected(); + } + } + + return false; + } } |