thomascube
2012-01-18 7fe3811c65a7c63154f03610e289a6d196f3ae2e
program/include/rcube_ldap.php
@@ -6,7 +6,10 @@
 | This file is part of the Roundcube Webmail client                     |
 | Copyright (C) 2006-2011, The Roundcube Dev Team                       |
 | Copyright (C) 2011, Kolab Systems AG                                  |
 | Licensed under the GNU GPL                                            |
 |                                                                       |
 | Licensed under the GNU General Public License version 3 or            |
 | any later version with exceptions for skins & plugins.                |
 | See the README file for a full license statement.                     |
 |                                                                       |
 | PURPOSE:                                                              |
 |   Interface to an LDAP address directory                              |
@@ -176,7 +179,7 @@
            $host     = idn_to_ascii(rcube_parse_host($host));
            $hostname = $host.($this->prop['port'] ? ':'.$this->prop['port'] : '');
            $this->_debug("C: Connect [$hostname]");
            $this->_debug("C: Connect [$hostname] [{$this->prop['name']}]");
            if ($lc = @ldap_connect($host, $this->prop['port']))
            {
@@ -870,10 +873,8 @@
                // The filter is not set, set it.
                $this->filter = $this->prop['filter'];
            }
            $this->_exec_search(true);
            if ($this->ldap_result) {
                $count = ldap_count_entries($this->conn, $this->ldap_result);
            }
            $count = (int) $this->_exec_search(true);
        }
        return new rcube_result_set($count, ($this->list_page-1) * $this->page_size);
@@ -1027,7 +1028,7 @@
        $dn = self::dn_encode($dn);
        // add new contact to the selected group
        if ($this->groups)
        if ($this->group_id)
            $this->add_to_group($this->group_id, $dn);
        return $dn;
@@ -1320,12 +1321,13 @@
                if (!($value = $rec[$lf][$i]))
                    continue;
                list($col, $subtype) = explode(':', $rf);
                $out['_raw_attrib'][$lf][$i] = $value;
                if ($rf == 'email' && $this->mail_domain && !strpos($value, '@'))
                    $out[$rf][] = sprintf('%s@%s', $value, $this->mail_domain);
                else if (in_array($rf, array('street','zipcode','locality','country','region')))
                    $out['address'][$i][$rf] = $value;
                else if (in_array($col, array('street','zipcode','locality','country','region')))
                    $out['address'.($subtype?':':'').$subtype][$i][$col] = $value;
                else if ($rec[$lf]['count'] > 1)
                    $out[$rf][] = $value;
                else
@@ -1722,13 +1724,16 @@
        if (($group_cache = $this->cache->get('groups')) === null)
            $group_cache = $this->_fetch_groups();
        if (!is_array($contact_ids))
            $contact_ids = explode(',', $contact_ids);
        $base_dn     = $this->groups_base_dn;
        $group_name  = $group_cache[$group_id]['name'];
        $member_attr = $group_cache[$group_id]['member_attr'];
        $group_dn    = "cn=$group_name,$base_dn";
        $new_attrs = array();
        foreach (explode(",", $contact_ids) as $id)
        foreach ($contact_ids as $id)
            $new_attrs[$member_attr][] = self::dn_decode($id);
        $this->_debug("C: Add [dn: $group_dn]: ".print_r($new_attrs, true));