From: Michael M Slusarz Date: Mon, 1 Feb 2010 05:55:40 +0000 (-0700) Subject: Add ability to disable server capabilities. X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=2b94e501f39024682944dcdc7f3e439c02ba22de;p=horde.git Add ability to disable server capabilities. --- diff --git a/framework/Imap_Client/lib/Horde/Imap/Client.php b/framework/Imap_Client/lib/Horde/Imap/Client.php index ad3cd90b3..968b385e2 100644 --- a/framework/Imap_Client/lib/Horde/Imap/Client.php +++ b/framework/Imap_Client/lib/Horde/Imap/Client.php @@ -31,6 +31,9 @@ * + Horde_Imap_Client::FETCH_STRUCTURE * lifetime - [OPTIONAL] (integer) The lifetime of the cache data (in secs). * slicesize - [OPTIONAL] (integer) The slicesize to use. + * capability_ignore - (array) A list of IMAP capabilites to ignore, even if + * they are supported on the server. + * DEFAULT: No supported capabilities are ignored * comparator - (string) The search comparator to use instead of the default * IMAP server comparator. See * Horde_Imap_Client_Base::setComparator() for the format. diff --git a/framework/Imap_Client/lib/Horde/Imap/Client/Base.php b/framework/Imap_Client/lib/Horde/Imap/Client/Base.php index 5e566f088..156103238 100644 --- a/framework/Imap_Client/lib/Horde/Imap/Client/Base.php +++ b/framework/Imap_Client/lib/Horde/Imap/Client/Base.php @@ -290,6 +290,10 @@ abstract class Horde_Imap_Client_Base { if (!isset($this->_init['capability'])) { $this->_init['capability'] = $this->_capability(); + + if (!empty($this->_params['capability_ignore'])) { + $this->_init['capability'] = array_diff_key($this->_init['capability'], array_flip($this->_params['capability_ignore'])); + } } return $this->_init['capability']; diff --git a/framework/Imap_Client/package.xml b/framework/Imap_Client/package.xml index e45d3ece6..b7d5b750a 100644 --- a/framework/Imap_Client/package.xml +++ b/framework/Imap_Client/package.xml @@ -31,7 +31,8 @@ http://pear.php.net/dtd/package-2.0.xsd"> alpha LGPL - * Add Horde_Imap_Client_Base::parseCacheId(). + * Add ability to disable server capabilities. + * Add Horde_Imap_Client_Base::parseCacheId(). * Added STATUS_LASTMODSEQ and STATUS_LASTMODSEQUIDS status() entries. * Add support for LIST-STATUS (draft-ietf-morg-status-in-list-01). * Add support for THREAD=REFS (draft-ietf-morg-inthread-00). diff --git a/imp/config/servers.php.dist b/imp/config/servers.php.dist index d0ffbac2c..a764049be 100644 --- a/imp/config/servers.php.dist +++ b/imp/config/servers.php.dist @@ -169,6 +169,14 @@ * *** you are doing! FOR MOST PEOPLE, AUTO-DETECTION OF THESE PARAMETERS *** * *** (the default if the parameters are not set) SHOULD BE USED! *** * + * capability_ignore: (array) A list of IMAP capabilites to ignore, even if + * they are supported on the server. This capability names + * should be in all capitals. This option may be useful, + * for example, if it is known that a certain capability is + * buggy on the given server. Otherwise, all available + * and supported IMAP capabilities will be (and should be) + * used. (IMAP only) + * * comparator: (string) The search comparator to use instead of the default * IMAP server comparator. See RFC 4790 [3.1] - "collation-id" - * for the format. Your IMAP server must support the I18NLEVEL diff --git a/imp/lib/Imap.php b/imp/lib/Imap.php index 516afcdf2..5fc3658b1 100644 --- a/imp/lib/Imap.php +++ b/imp/lib/Imap.php @@ -181,6 +181,7 @@ class IMP_Imap : 'imap'; $imap_config = array( + 'capability_ignore' => empty($server['capability_ignore']) ? array() : $server['capability_ignore'], 'comparator' => empty($server['comparator']) ? false : $server['comparator'], 'debug' => isset($server['debug']) ? $server['debug'] : null, 'hostspec' => isset($server['hostspec']) ? $server['hostspec'] : null,