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