From bc94e296e74ab4a3313a3f807b0a5cc40f264879 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 08 Aug 2013 07:37:46 -0400
Subject: [PATCH] Correct imap_timeout and smtp_timeout description, so 0 doesn't mean no limit, but default_socket_timeout use (#1489247)

---
 config/defaults.inc.php |   78 ++++++++++++++++++++++++++++-----------
 1 files changed, 56 insertions(+), 22 deletions(-)

diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index a796e16..eedb816 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -129,13 +129,21 @@
 // extension if available. Some servers (dovecot 1.x) returns wrong results
 // for shared namespaces in this case. http://trac.roundcube.net/ticket/1486225
 // Enable this option to force LSUB command usage instead.
+// Deprecated: Use imap_disabled_caps = array('LIST-EXTENDED')
 $config['imap_force_lsub'] = false;
 
 // Some server configurations (e.g. Courier) doesn't list folders in all namespaces
 // Enable this option to force listing of folders in all namespaces
 $config['imap_force_ns'] = false;
 
-// IMAP connection timeout, in seconds. Default: 0 (no limit)
+// List of disabled imap extensions.
+// Use if your IMAP server has broken implementation of some feature
+// and you can't remove it from CAPABILITY string on server-side.
+// For example UW-IMAP server has broken ESEARCH.
+// Note: Because the list is cached, re-login is required after change.
+$config['imap_disabled_caps'] = array();
+
+// IMAP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
 $config['imap_timeout'] = 0;
 
 // Optional IMAP authentication identifier to be used as authorization proxy
@@ -200,7 +208,9 @@
 // localhost if that isn't defined.
 $config['smtp_helo_host'] = '';
 
-// SMTP connection timeout, in seconds. Default: 0 (no limit)
+// SMTP connection timeout, in seconds. Default: 0 (use default_socket_timeout)
+// Note: There's a known issue where using ssl connection with
+// timeout > 0 causes connection errors (https://bugs.php.net/bug.php?id=54511)
 $config['smtp_timeout'] = 0;
 
 // ----------------------------------
@@ -524,8 +534,9 @@
 // Setting it to 'shared' will make the dictionary shared by all users.
 $config['spellcheck_dictionary'] = false;
 
-// Set the spell checking engine. 'googie' is the default. 'pspell' is also available,
-// but requires the Pspell extensions. When using Nox Spell Server, also set 'googie' here.
+// Set the spell checking engine. 'googie' is the default.
+// 'pspell' and 'enchant' are also available, but they require
+// PHP Pspell or Enchant extensions. When using Nox Spell Server, also set 'googie' here.
 $config['spellcheck_engine'] = 'googie';
 
 // For a locally installed Nox Spell Server, please specify the URI to call it.
@@ -612,7 +623,7 @@
   // For example %n = mail.domain.tld, %t = domain.tld
   'hosts'         => array('directory.verisign.com'),
   'port'          => 389,
-  'use_tls'	      => false,
+  'use_tls'       => false,
   'ldap_version'  => 3,       // using LDAPv3
   'network_timeout' => 10,    // The timeout (in seconds) for connect + bind arrempts. This is only supported in PHP >= 5.3.0 with OpenLDAP 2.x
   'user_specific' => false,   // If true the base_dn, bind_dn and bind_pass default to the user's IMAP login.
@@ -673,6 +684,7 @@
     'phone:work'  => 'telephoneNumber',
     'phone:mobile' => 'mobile',
     'phone:pager' => 'pager',
+    'phone:workfax' => 'facsimileTelephoneNumber',
     'street'      => 'street',
     'zipcode'     => 'postalCode',
     'region'      => 'st',
@@ -683,9 +695,8 @@
     'department'   => 'ou',
     'jobtitle'     => 'title',
     'notes'        => 'description',
+    'photo'        => 'jpegPhoto',
     // these currently don't work:
-    // 'phone:workfax' => 'facsimileTelephoneNumber',
-    // 'photo'         => 'jpegPhoto',
     // 'manager'       => 'manager',
     // 'assistant'     => 'secretary',
   ),
@@ -696,27 +707,50 @@
   // 'uid'  => 'md5(microtime())',               // You may specify PHP code snippets which are then eval'ed 
   // 'mail' => '{givenname}.{sn}@mydomain.com',  // or composite strings with placeholders for existing attributes
   ),
-  'sort'          => 'cn',    // The field to sort the listing by.
-  'scope'         => 'sub',   // search mode: sub|base|list
-  'filter'        => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
-  'fuzzy_search'  => true,    // server allows wildcard search
-  'vlv'           => false,   // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
-  'numsub_filter' => '(objectClass=organizationalUnit)',   // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
-  'sizelimit'     => '0',     // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
-  'timelimit'     => '0',     // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
-  'referrals'     => true|false,  // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
+  'sort'           => 'cn',         // The field to sort the listing by.
+  'scope'          => 'sub',        // search mode: sub|base|list
+  'filter'         => '(objectClass=inetOrgPerson)',      // used for basic listing (if not empty) and will be &'d with search queries. example: status=act
+  'fuzzy_search'   => true,         // server allows wildcard search
+  'vlv'            => false,        // Enable Virtual List View to more efficiently fetch paginated data (if server supports it)
+  'vlv_search'     => false,        // Use Virtual List View functions for autocompletion searches (if server supports it)
+  'numsub_filter'  => '(objectClass=organizationalUnit)',   // with VLV, we also use numSubOrdinates to query the total number of records. Set this filter to get all numSubOrdinates attributes for counting
+  'config_root_dn' => 'cn=config',  // Root DN to search config entries (e.g. vlv indexes)
+  'sizelimit'      => '0',          // Enables you to limit the count of entries fetched. Setting this to 0 means no limit.
+  'timelimit'      => '0',          // Sets the number of seconds how long is spend on the search. Setting this to 0 means no limit.
+  'referrals'      => false,        // Sets the LDAP_OPT_REFERRALS option. Mostly used in multi-domain Active Directory setups
 
   // definition for contact groups (uncomment if no groups are supported)
   // for the groups base_dn, the user replacements %fu, %u, $d and %dc work as for base_dn (see above)
   // if the groups base_dn is empty, the contact base_dn is used for the groups as well
   // -> in this case, assure that groups and contacts are separated due to the concernig filters! 
-  'groups'        => array(
-    'base_dn'     => '',
-    'scope'       => 'sub',   // search mode: sub|base|list
-    'filter'      => '(objectClass=groupOfNames)',
+  'groups'  => array(
+    'base_dn'        => '',
+    'scope'          => 'sub',       // Search mode: sub|base|list
+    'filter'         => '(objectClass=groupOfNames)',
     'object_classes' => array("top", "groupOfNames"),
-    'member_attr'  => 'member',   // name of the member attribute, e.g. uniqueMember
-    'name_attr'    => 'cn',       // attribute to be used as group name
+    'member_attr'    => 'member',   // Name of the member attribute, e.g. uniqueMember
+    'name_attr'      => 'cn',       // Attribute to be used as group name
+    'member_filter'  => '(objectclass=*)',  // Optional filter to use when querying for group members
+    'vlv'            => false,      // Use VLV controls to list groups
+  ),
+  // this configuration replaces the regular groups listing in the directory tree with
+  // a hard-coded list of groups, each listing entries with the configured base DN and filter.
+  // if the 'groups' option from above is set, it'll be shown as the first entry with the name 'Groups'
+  'group_filters' => array(
+    'departments' => array(
+      'name'    => 'Company Departments',
+      'scope'   => 'list',
+      'base_dn' => 'ou=Groups,dc=mydomain,dc=com',
+      'filter'  => '(|(objectclass=groupofuniquenames)(objectclass=groupofurls))',
+      'name_attr' => 'cn',
+    ),
+    'customers' => array(
+      'name'    => 'Customers',
+      'scope'   => 'sub',
+      'base_dn' => 'ou=Customers,dc=mydomain,dc=com',
+      'filter'  => '(objectClass=inetOrgPerson)',
+      'name_attr' => 'sn',
+    ),
   ),
 );
 */

--
Gitblit v1.9.1