diff options
-rw-r--r-- | program/lib/Roundcube/rcube_ldap.php | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php index 334cb2465..d286c2da3 100644 --- a/program/lib/Roundcube/rcube_ldap.php +++ b/program/lib/Roundcube/rcube_ldap.php @@ -85,8 +85,13 @@ class rcube_ldap extends rcube_addressbook // add group name attrib to the list of attributes to be fetched $fetch_attributes[] = $this->prop['groups']['name_attr']; } - else if (is_array($p['group_filters']) && count($p['group_filters'])) { + if (is_array($p['group_filters']) && count($p['group_filters'])) { $this->groups = true; + + foreach ($p['group_filters'] as $group_filter) { + if ($group_filter['name_attr']) + $fetch_attributes[] = $group_filter['name_attr']; + } } // fieldmap property is given @@ -198,8 +203,8 @@ class rcube_ldap extends rcube_addressbook $this->cache = $rcube->get_cache($cache_name, $cache_type, $cache_ttl); // determine which attributes to fetch + $this->prop['list_attributes'] = array_unique($fetch_attributes); $this->prop['attributes'] = array_merge(array_values($this->fieldmap), $fetch_attributes); - $this->prop['list_attributes'] = $fetch_attributes; foreach ($rcube->config->get('contactlist_fields') as $col) { $this->prop['list_attributes'] = array_merge($this->prop['list_attributes'], $this->_map_field($col)); } @@ -1334,7 +1339,7 @@ class rcube_ldap extends rcube_addressbook if (self::is_group_entry($rec)) { $out['_type'] = 'group'; $out['readonly'] = true; - $fieldmap['name'] = $this->prop['groups']['name_attr']; + $fieldmap['name'] = $this->group_data['name_attr'] ? $this->group_data['name_attr'] : $this->prop['groups']['name_attr']; } foreach ($fieldmap as $rf => $lf) |