From 5eb9c70b605cc442c4f49366b6eb765a867b4638 Mon Sep 17 00:00:00 2001 From: Aleksander Machniak <alec@alec.pl> Date: Wed, 02 Sep 2015 07:49:13 -0400 Subject: [PATCH] Added method to determine IMAP server vendor, for future use --- program/lib/Roundcube/rcube_imap.php | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 48 insertions(+), 2 deletions(-) diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php index 6ecb8df..51c5442 100644 --- a/program/lib/Roundcube/rcube_imap.php +++ b/program/lib/Roundcube/rcube_imap.php @@ -81,7 +81,7 @@ */ public function __construct() { - $this->conn = new rcube_imap_generic(); + $this->conn = new rcube_imap_generic(); $this->plugins = rcube::get_instance()->plugins; // Set namespace and delimiter from session, @@ -469,7 +469,7 @@ return; } - $config = rcube::get_instance()->config; + $config = rcube::get_instance()->config; $imap_personal = $config->get('imap_ns_personal'); $imap_other = $config->get('imap_ns_other'); $imap_shared = $config->get('imap_ns_shared'); @@ -541,6 +541,52 @@ } /** + * Returns IMAP server vendor name + * + * @return string Vendor name + * @since 1.2 + */ + public function get_vendor() + { + if ($_SESSION['imap_vendor'] !== null) { + return $_SESSION['imap_vendor']; + } + + $config = rcube::get_instance()->config; + $imap_vendor = $config->get('imap_vendor'); + + if ($imap_vendor) { + return $imap_vendor; + } + + if (!$this->check_connection()) { + return; + } + + if (($ident = $this->conn->data['ID']) === null) { + $ident = $this->conn->id(array( + 'name' => 'Roundcube', + 'version' => RCUBE_VERSION, + 'php' => PHP_VERSION, + 'os' => PHP_OS, + )); + } + + $vendor = (string) (!empty($ident) ? $ident['name'] : ''); + $ident = strtolower($vendor . ' ' . $this->conn->data['GREETING']); + $vendors = array('cyrus', 'dovecot', 'uw-imap', 'gmail', 'hmail'); + + foreach ($vendors as $v) { + if (strpos($ident, $v) !== false) { + $vendor = $v; + break; + } + } + + return $_SESSION['imap_vendor'] = $vendor; + } + + /** * Get message count for a specific folder * * @param string $folder Folder name -- Gitblit v1.9.1