Make LDAP group name attribute configurable

release-0.7
thomascube 13 years ago
parent 502436dad0
commit 448f81362a

@ -83,6 +83,9 @@ class rcube_ldap extends rcube_addressbook
$this->prop['member_attr'] = strtolower($p['groups']['member_attr']);
else if (empty($p['member_attr']))
$this->prop['member_attr'] = 'member';
// set default name attribute to cn
if (empty($this->prop['groups']['name_attr']))
$this->prop['groups']['name_attr'] = 'cn';
}
// fieldmap property is given
@ -1115,10 +1118,11 @@ class rcube_ldap extends rcube_addressbook
$base_dn = $this->groups_base_dn;
$filter = $this->prop['groups']['filter'];
$name_attr = $this->prop['groups']['name_attr'];
$this->_debug("C: Search [$filter][dn: $base_dn]");
$res = @ldap_search($this->conn, $base_dn, $filter, array('cn', $this->prop['member_attr']));
$res = @ldap_search($this->conn, $base_dn, $filter, array($name_attr, $this->prop['member_attr']));
if ($res === false)
{
$this->_debug("S: ".ldap_error($this->conn));
@ -1132,7 +1136,7 @@ class rcube_ldap extends rcube_addressbook
$group_sortnames = array();
for ($i=0; $i<$ldap_data["count"]; $i++)
{
$group_name = $ldap_data[$i]['cn'][0];
$group_name = $ldap_data[$i][$name_attr][0];
if (!$search || strstr(strtolower($group_name), strtolower($search)))
{
$group_id = self::dn_encode($group_name);
@ -1162,10 +1166,11 @@ class rcube_ldap extends rcube_addressbook
$base_dn = $this->groups_base_dn;
$new_dn = "cn=$group_name,$base_dn";
$new_gid = self::dn_encode($group_name);
$name_attr = $this->prop['groups']['name_attr'];
$new_entry = array(
'objectClass' => $this->prop['groups']['object_classes'],
'cn' => $group_name,
$name_attr => $group_name,
$this->prop['member_attr'] => '',
);
@ -1336,11 +1341,12 @@ class rcube_ldap extends rcube_addressbook
$base_dn = $this->groups_base_dn;
$contact_dn = self::dn_decode($contact_id);
$member_attr = $this->prop['member_attr'];
$name_attr = $this->prop['groups']['name_attr'];
$filter = strtr("($member_attr=$contact_dn)", array('\\' => '\\\\'));
$this->_debug("C: Search [$filter][dn: $base_dn]");
$res = @ldap_search($this->conn, $base_dn, $filter, array('cn'));
$res = @ldap_search($this->conn, $base_dn, $filter, array($name_attr));
if ($res === false)
{
$this->_debug("S: ".ldap_error($this->conn));
@ -1352,7 +1358,7 @@ class rcube_ldap extends rcube_addressbook
$groups = array();
for ($i=0; $i<$ldap_data["count"]; $i++)
{
$group_name = $ldap_data[$i]['cn'][0];
$group_name = $ldap_data[$i][$name_attr][0];
$group_id = self::dn_encode($group_name);
$groups[$group_id] = $group_id;
}

Loading…
Cancel
Save