Changeset f763fbd in github


Ignore:
Timestamp:
Sep 20, 2011 4:09:52 AM (20 months ago)
Author:
alecpl <alec@…>
Branches:
master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.7, release-0.8
Children:
015decf
Parents:
d96a15e
Message:
  • Make group's "member" attibute name configurable
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • config/main.inc.php.dist

    r1cc9e21 rf763fbd  
    589589  // -> in this case, assure that groups and contacts are separated due to the concernig filters!  
    590590  'groups'        => array( 
    591     'base_dn'     => '',    
     591    'base_dn'     => '', 
    592592    'filter'      => '(objectClass=groupOfNames)', 
    593593    'object_classes' => array("top", "groupOfNames"), 
     594    // name of the member attribute, e.g. uniqueMember 
     595    'member_attr'    => 'member', 
    594596  ), 
    595597); 
  • program/include/rcube_ldap.php

    r681e9e6 rf763fbd  
    7474 
    7575        // check if groups are configured 
    76         if (is_array($p['groups']) and count($p['groups'])) 
     76        if (is_array($p['groups']) && count($p['groups'])) { 
    7777            $this->groups = true; 
     78            // set member field 
     79            if (!empty($p['groups']['member_attr'])) 
     80                $this->prop['member_attr'] = $p['groups']['member_attr']; 
     81            else if (empty($p['member_attr'])) 
     82                $this->prop['member_attr'] = 'member'; 
     83        } 
    7884 
    7985        // fieldmap property is given 
     
    116122            $this->prop['required_fields'][$key] = $this->_attr_name(strtolower($val)); 
    117123 
    118         $this->sort_col = is_array($p['sort']) ? $p['sort'][0] : $p['sort']; 
    119         $this->debug = $debug; 
     124        $this->sort_col    = is_array($p['sort']) ? $p['sort'][0] : $p['sort']; 
     125        $this->debug       = $debug; 
    120126        $this->mail_domain = $mail_domain; 
    121127 
     
    11061112        $this->_debug("C: Search [$filter][dn: $base_dn]"); 
    11071113 
    1108         $res = @ldap_search($this->conn, $base_dn, $filter, array('cn','member')); 
     1114        $res = @ldap_search($this->conn, $base_dn, $filter, array('cn', $this->prop['member_attr'])); 
    11091115        if ($res === false) 
    11101116        { 
     
    11261132                $groups[$group_id]['ID'] = $group_id; 
    11271133                $groups[$group_id]['name'] = $group_name; 
    1128                 $groups[$group_id]['members'] = $ldap_data[$i]['member']; 
     1134                $groups[$group_id]['members'] = $ldap_data[$i][$this->prop['member_attr']]; 
    11291135                $group_sortnames[] = strtolower($group_name); 
    11301136            } 
     
    11541160            'objectClass' => $this->prop['groups']['object_classes'], 
    11551161            'cn' => $group_name, 
    1156             'member' => '', 
     1162            $this->prop['member_attr'] => '', 
    11571163        ); 
    11581164 
     
    12481254            $this->list_groups(); 
    12491255 
    1250         $base_dn = $this->groups_base_dn; 
    1251         $group_name = $this->group_cache[$group_id]['name']; 
    1252         $group_dn = "cn=$group_name,$base_dn"; 
     1256        $base_dn     = $this->groups_base_dn; 
     1257        $group_name  = $this->group_cache[$group_id]['name']; 
     1258        $member_attr = $this->prop['member_attr']; 
     1259        $group_dn    = "cn=$group_name,$base_dn"; 
    12531260 
    12541261        $new_attrs = array(); 
    12551262        foreach (explode(",", $contact_ids) as $id) 
    1256             $new_attrs['member'][] = self::dn_decode($id); 
     1263            $new_attrs[$member_attr][] = self::dn_decode($id); 
    12571264 
    12581265        $this->_debug("C: Add [dn: $group_dn]: ".print_r($new_attrs, true)); 
     
    12831290            $this->list_groups(); 
    12841291 
    1285         $base_dn = $this->groups_base_dn; 
    1286         $group_name = $this->group_cache[$group_id]['name']; 
    1287         $group_dn = "cn=$group_name,$base_dn"; 
     1292        $base_dn     = $this->groups_base_dn; 
     1293        $group_name  = $this->group_cache[$group_id]['name']; 
     1294        $member_attr = $this->prop['member_attr']; 
     1295        $group_dn    = "cn=$group_name,$base_dn"; 
    12881296 
    12891297        $del_attrs = array(); 
    12901298        foreach (explode(",", $contact_ids) as $id) 
    1291             $del_attrs['member'][] = self::dn_decode($id); 
     1299            $del_attrs[$member_attr][] = self::dn_decode($id); 
    12921300 
    12931301        $this->_debug("C: Delete [dn: $group_dn]: ".print_r($del_attrs, true)); 
     
    13191327            return array(); 
    13201328 
    1321         $base_dn = $this->groups_base_dn; 
    1322         $contact_dn = self::dn_decode($contact_id); 
    1323         $filter = strtr("(member=$contact_dn)", array('\\' => '\\\\')); 
     1329        $base_dn     = $this->groups_base_dn; 
     1330        $contact_dn  = self::dn_decode($contact_id); 
     1331        $member_attr = $this->prop['member_attr']; 
     1332        $filter      = strtr("($member_attr=$contact_dn)", array('\\' => '\\\\')); 
    13241333 
    13251334        $this->_debug("C: Search [$filter][dn: $base_dn]"); 
Note: See TracChangeset for help on using the changeset viewer.