| | |
| | | $rcube = rcube::get_instance(); |
| | | $this->cache = $rcube->get_cache('LDAP.' . asciiwords($this->prop['name']), 'db', 600); |
| | | |
| | | // initialize ldap wrapper object |
| | | // determine which attributes to fetch |
| | | $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)); |
| | | } |
| | | |
| | | // initialize ldap wrapper object |
| | | $this->ldap = new rcube_ldap_generic($this->prop, true); |
| | | $this->ldap->set_cache($this->cache); |
| | | |
| | |
| | | return $group_members; |
| | | |
| | | // read these attributes for all members |
| | | $attrib = $count ? array('dn','objectClass') : $this->prop['attributes']; |
| | | $attrib = $count ? array('dn','objectClass') : $this->prop['list_attributes']; |
| | | $attrib[] = 'member'; |
| | | $attrib[] = 'uniqueMember'; |
| | | $attrib[] = 'memberURL'; |
| | |
| | | { |
| | | $group_members = array(); |
| | | |
| | | for ($i=0; $i < $entry['memberurl']['count']; $i++) |
| | | { |
| | | for ($i=0; $i < $entry['memberurl']['count']; $i++) { |
| | | // extract components from url |
| | | if (!preg_match('!ldap:///([^\?]+)\?\?(\w+)\?(.*)$!', $entry['memberurl'][$i], $m)) |
| | | continue; |
| | | |
| | | // add search filter if any |
| | | $filter = $this->filter ? '(&(' . $m[3] . ')(' . $this->filter . '))' : $m[3]; |
| | | $attrs = $count ? array('dn','objectClass') : $this->prop['attributes']; |
| | | $attrs = $count ? array('dn','objectClass') : $this->prop['list_attributes']; |
| | | if ($result = $this->ldap->search($m[1], $filter, $m[2], $attrs, $this->group_data)) { |
| | | $entries = $result->entries(); |
| | | for ($j = 0; $j < $entries['count']; $j++) { |