Aleksander Machniak
2013-07-03 70538ecbaa40792329902381ec76a76d2b0cbbc8
Fix groups list in contact info page - get_record_groups() result
is a ID=>Name hash and cannot be merged with list_groups() result
2 files modified
18 ■■■■■ changed files
program/lib/Roundcube/rcube_ldap.php 8 ●●●● patch | view | raw | blame | history
program/steps/addressbook/show.inc 10 ●●●●● patch | view | raw | blame | history
program/lib/Roundcube/rcube_ldap.php
@@ -1216,8 +1216,7 @@
            // change the group membership of the contact
            if ($this->groups) {
                $group_ids = $this->get_record_groups($dn);
                foreach ($group_ids as $group_id => $group_prop)
                {
                foreach (array_keys($group_ids) as $group_id) {
                    $this->remove_from_group($group_id, $dn);
                    $this->add_to_group($group_id, $newdn);
                }
@@ -1282,7 +1281,7 @@
            if ($this->groups) {
                $dn = self::dn_encode($dn);
                $group_ids = $this->get_record_groups($dn);
                foreach ($group_ids as $group_id => $group_prop) {
                foreach (array_keys($group_ids) as $group_id) {
                    $this->remove_from_group($group_id, $dn);
                }
            }
@@ -1894,8 +1893,9 @@
                $entry['dn'] = $ldap_data->get_dn();
            $group_name = $entry[$name_attr][0];
            $group_id = self::dn_encode($entry['dn']);
            $groups[$group_id] = array('ID' => $group_id, 'name' => $group_name, 'dn' => $entry['dn']);
            $groups[$group_id] = $group_name;
        }
        return $groups;
    }
program/steps/addressbook/show.inc
@@ -209,17 +209,13 @@
        return '';
    }
    $table = new html_table(array('cols' => 2, 'cellspacing' => 0, 'border' => 0));
    $members = $CONTACTS->get_record_groups($contact_id);
    $members  = $CONTACTS->get_record_groups($contact_id);
    $table    = new html_table(array('cols' => 2, 'cellspacing' => 0, 'border' => 0));
    $checkbox = new html_checkbox(array('name' => '_gid[]',
        'class' => 'groupmember', 'disabled' => $CONTACTS->readonly));
    foreach (array_merge($GROUPS, $members) as $group) {
    foreach ($GROUPS as $group) {
        $gid = $group['ID'];
        if ($seen[$gid]++)
            continue;
        $table->add(null, $checkbox->show($members[$gid] ? $gid : null,
            array('value' => $gid, 'id' => 'ff_gid' . $gid)));
        $table->add(null, html::label('ff_gid' . $gid, Q($group['name'])));