| | |
| | | |
| | | private $base_dn = ''; |
| | | private $groups_base_dn = ''; |
| | | private $group_url; |
| | | private $group_data; |
| | | private $group_search_cache; |
| | | private $cache; |
| | |
| | | |
| | | // fieldmap property is given |
| | | if (is_array($p['fieldmap'])) { |
| | | $p['fieldmap'] = array_filter($p['fieldmap']); |
| | | foreach ($p['fieldmap'] as $rf => $lf) |
| | | $this->fieldmap[$rf] = $this->_attr_name(strtolower($lf)); |
| | | } |
| | | else if (!empty($p)) { |
| | | // read deprecated *_field properties to remain backwards compatible |
| | | foreach ($p as $prop => $value) |
| | | if (preg_match('/^(.+)_field$/', $prop, $matches)) |
| | | if (!empty($value) && preg_match('/^(.+)_field$/', $prop, $matches)) |
| | | $this->fieldmap[$matches[1]] = $this->_attr_name(strtolower($value)); |
| | | } |
| | | |
| | |
| | | if ($this->prop['vlv_search'] && $this->ready && join(',', (array)$fields) == join(',', $list_fields)) { |
| | | $this->result = new rcube_result_set(0); |
| | | |
| | | $search_suffix = $this->prop['fuzzy_search'] && $mode != 1 ? '*' : ''; |
| | | $this->ldap->config_set('fuzzy_search', intval($this->prop['fuzzy_search'] && $mode != 1)); |
| | | $ldap_data = $this->ldap->search($this->base_dn, $this->prop['filter'], $this->prop['scope'], $this->prop['attributes'], |
| | | array('search' => $value . $search_suffix /*, 'sort' => $this->prop['sort'] */)); |
| | | array('search' => $value /*, 'sort' => $this->prop['sort'] */)); |
| | | if ($ldap_data === false) { |
| | | return $this->result; |
| | | } |
| | | |
| | | // get all entries of this page and post-filter those that really match the query |
| | | $search = mb_strtolower($value); |
| | | foreach ($ldap_data as $i => $entry) { |
| | | foreach ($ldap_data as $entry) { |
| | | $rec = $this->_ldap2result($entry); |
| | | foreach ($fields as $f) { |
| | | foreach ((array)$rec[$f] as $val) { |
| | |
| | | return $ldap_data; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Returns unified attribute name (resolving aliases) |
| | | */ |
| | |
| | | } |
| | | |
| | | /** |
| | | * Prints debug info to the log |
| | | */ |
| | | private function _debug($str) |
| | | { |
| | | if ($this->debug) { |
| | | rcube::write_log('ldap', $str); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Activate/deactivate debug mode |
| | | * |
| | | * @param boolean $dbg True if LDAP commands should be logged |
| | |
| | | $this->ldap->config_set('debug', $dbg); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * Setter for the current group |
| | |
| | | $filter = strtr("(|(member=$contact_dn)(uniqueMember=$contact_dn)$add_filter)", array('\\' => '\\\\')); |
| | | |
| | | $ldap_data = $this->ldap->search($base_dn, $filter, 'sub', array('dn', $name_attr)); |
| | | if ($res === false) { |
| | | if ($ldap_data === false) { |
| | | return array(); |
| | | } |
| | | |