alecpl
2009-08-28 6855ce6f702d5fd5c055b6edf9af0085882a4c56
- Fix LDAP addressbook browsing when only one directory is used (#1486022)


3 files modified
43 ■■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/include/rcube_ldap.php 2 ●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 40 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG RoundCube Webmail
===========================
- Fix LDAP addressbook browsing when only one directory is used (#1486022)
- Fix endless loop on error response for APPEND command (#1486060)
- Don't require date.timezone setting in installer (#1485989)
- Fix date sorting problem with Courier IMAP server (#1486065)
program/include/rcube_ldap.php
@@ -52,7 +52,7 @@
  function __construct($p)
  {
    $this->prop = $p;
    foreach ($p as $prop => $value)
      if (preg_match('/^(.+)_field$/', $prop, $matches))
        $this->fieldmap[$matches[1]] = $value;
program/steps/addressbook/func.inc
@@ -19,8 +19,30 @@
*/
// add list of address sources to client env
$js_list = array();
if (strtolower($CONFIG['address_book_type']) != 'ldap') {
  // We are using the DB address book, add it.
  $js_list['0'] = array('id' => 0, 'name' => rcube_label('personaladrbook'), 'readonly' => false);
}
if (is_array($CONFIG['ldap_public'])) {
  foreach ($CONFIG['ldap_public'] as $id => $prop)
    $js_list[$id] = array('id' => $id, 'name' => $prop['name'], 'readonly' => !$prop['writable']);
}
$plugin = $RCMAIL->plugins->exec_hook('address_sources', array('sources' => $js_list));
$js_list = $plugin['sources'];
// select source
$source = get_input_value('_source', RCUBE_INPUT_GPC);
// if source is not set use first directory
if (empty($source))
  $source = $js_list[key($js_list)]['id'];
// instantiate a contacts object according to the given source
$CONTACTS = $RCMAIL->get_address_book(($source = get_input_value('_source', RCUBE_INPUT_GPC)));
$CONTACTS = $RCMAIL->get_address_book($source);
$CONTACTS->set_pagesize($CONFIG['pagesize']);
@@ -34,23 +56,11 @@
if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']]))
  $CONTACTS->set_search_set($_SESSION['search'][$_REQUEST['_search']]);
// set data source env
$OUTPUT->set_env('source', $source ? $source : '0');
$OUTPUT->set_env('readonly', $CONTACTS->readonly, false);
// add list of address sources to client env
$js_list = array();
if (strtolower($CONFIG['address_book_type']) != 'ldap') {
  // We are using the DB address book, add it.
  $js_list['0'] = array('id' => 0, 'name' => rcube_label('personaladrbook'), 'readonly' => false);
}
if (is_array($CONFIG['ldap_public'])) {
  foreach ($CONFIG['ldap_public'] as $id => $prop)
    $js_list[$id] = array('id' => $id, 'name' => $prop['name'], 'readonly' => !$prop['writable']);
}
$plugin = $RCMAIL->plugins->exec_hook('address_sources', array('sources' => $js_list));
$OUTPUT->set_env('address_sources', $plugin['sources']);
$OUTPUT->set_env('address_sources', $js_list);
function rcmail_directory_list($attrib)