Fix replacement variables in user-specific base_dn in some LDAP requests (#1489279)

pull/104/head
Aleksander Machniak 11 years ago
parent f477279035
commit 4287c9a2f9

@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail CHANGELOG Roundcube Webmail
=========================== ===========================
- Fix replacement variables in user-specific base_dn in some LDAP requests (#1489279)
- Fix purge action in folder manager (#1489280) - Fix purge action in folder manager (#1489280)
- Fix image scaling issues when image has only one dimension smaller than the limit (#1489274) - Fix image scaling issues when image has only one dimension smaller than the limit (#1489274)
- Fix issue where uploaded photo was lost when contact form did not validate (#1489274) - Fix issue where uploaded photo was lost when contact form did not validate (#1489274)

@ -515,6 +515,7 @@ class rcube_ldap extends rcube_addressbook
} }
else { else {
$prop = $this->group_id ? $this->group_data : $this->prop; $prop = $this->group_id ? $this->group_data : $this->prop;
$base_dn = $this->group_id ? $this->group_base_dn : $this->base_dn;
// use global search filter // use global search filter
if (!empty($this->filter)) if (!empty($this->filter))
@ -522,7 +523,7 @@ class rcube_ldap extends rcube_addressbook
// exec LDAP search if no result resource is stored // exec LDAP search if no result resource is stored
if ($this->ready && !$this->ldap_result) if ($this->ready && !$this->ldap_result)
$this->ldap_result = $this->ldap->search($prop['base_dn'], $prop['filter'], $prop['scope'], $this->prop['attributes'], $prop); $this->ldap_result = $this->ldap->search($base_dn, $prop['filter'], $prop['scope'], $this->prop['attributes'], $prop);
// count contacts for this user // count contacts for this user
$this->result = $this->count(); $this->result = $this->count();
@ -842,11 +843,12 @@ class rcube_ldap extends rcube_addressbook
// We have a connection but no result set, attempt to get one. // We have a connection but no result set, attempt to get one.
else if ($this->ready) { else if ($this->ready) {
$prop = $this->group_id ? $this->group_data : $this->prop; $prop = $this->group_id ? $this->group_data : $this->prop;
$base_dn = $this->group_id ? $this->group_base_dn : $this->base_dn;
if (!empty($this->filter)) { // Use global search filter if (!empty($this->filter)) { // Use global search filter
$prop['filter'] = $this->filter; $prop['filter'] = $this->filter;
} }
$count = $this->ldap->search($prop['base_dn'], $prop['filter'], $prop['scope'], array('dn'), $prop, true); $count = $this->ldap->search($base_dn, $prop['filter'], $prop['scope'], array('dn'), $prop, true);
} }
return new rcube_result_set($count, ($this->list_page-1) * $this->page_size); return new rcube_result_set($count, ($this->list_page-1) * $this->page_size);
@ -1584,6 +1586,7 @@ class rcube_ldap extends rcube_addressbook
$base_dn = $this->groups_base_dn; $base_dn = $this->groups_base_dn;
$filter = $this->prop['groups']['filter']; $filter = $this->prop['groups']['filter'];
$scope = $this->prop['groups']['scope'];
$name_attr = $this->prop['groups']['name_attr']; $name_attr = $this->prop['groups']['name_attr'];
$email_attr = $this->prop['groups']['email_attr'] ? $this->prop['groups']['email_attr'] : 'mail'; $email_attr = $this->prop['groups']['email_attr'] ? $this->prop['groups']['email_attr'] : 'mail';
$sort_attrs = $this->prop['groups']['sort'] ? (array)$this->prop['groups']['sort'] : array($name_attr); $sort_attrs = $this->prop['groups']['sort'] ? (array)$this->prop['groups']['sort'] : array($name_attr);
@ -1604,7 +1607,7 @@ class rcube_ldap extends rcube_addressbook
} }
$attrs = array_unique(array('dn', 'objectClass', $name_attr, $email_attr, $sort_attr)); $attrs = array_unique(array('dn', 'objectClass', $name_attr, $email_attr, $sort_attr));
$ldap_data = $ldap->search($base_dn, $filter, $this->prop['groups']['scope'], $attrs, $this->prop['groups']); $ldap_data = $ldap->search($base_dn, $filter, $scope, $attrs, $this->prop['groups']);
if ($ldap_data === false) { if ($ldap_data === false) {
return array(); return array();

Loading…
Cancel
Save