From 49cdae95f6d6e9c2010008d4414389654bcbac7b Mon Sep 17 00:00:00 2001 From: thomascube Date: Fri, 6 Jan 2012 15:57:33 +0000 Subject: Migrate LDAP fieldmap fix from trunk --- program/include/rcube_ldap.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'program') diff --git a/program/include/rcube_ldap.php b/program/include/rcube_ldap.php index a7ea62cfc..65ec46304 100644 --- a/program/include/rcube_ldap.php +++ b/program/include/rcube_ldap.php @@ -107,7 +107,7 @@ class rcube_ldap extends rcube_addressbook list($col, $type) = explode(':', $col); if (!is_array($this->coltypes[$col])) { $subtypes = $type ? array($type) : null; - $this->coltypes[$col] = array('limit' => 2, 'subtypes' => $subtypes); + $this->coltypes[$col] = array('limit' => 1, 'subtypes' => $subtypes); } elseif ($type) { $this->coltypes[$col]['subtypes'][] = $type; @@ -117,8 +117,15 @@ class rcube_ldap extends rcube_addressbook $this->fieldmap[$col] = $lf; } - if ($this->fieldmap['street'] && $this->fieldmap['locality']) - $this->coltypes['address'] = array('limit' => 1); + if ($this->fieldmap['street'] && $this->fieldmap['locality']) { + $this->coltypes['address'] = array('limit' => max(1, $this->coltypes['locality']['limit']), 'subtypes' => $this->coltypes['locality']['subtypes'], 'childs' => array()); + foreach (array('street','locality','zipcode','region','country') as $childcol) { + if ($this->fieldmap[$childcol]) { + $this->coltypes['address']['childs'][$childcol] = array('type' => 'text'); + unset($this->coltypes[$childcol]); // remove address child col from global coltypes list + } + } + } else if ($this->coltypes['address']) $this->coltypes['address'] = array('type' => 'textarea', 'childs' => null, 'limit' => 1, 'size' => 40); -- cgit v1.2.3