alecpl
2010-03-02 3704b78841ba05c31a2acaeabdffb9c471bb6610
- Added function to get addressbooks list rcmail::get_address_sources() (#1486248)


2 files modified
65 ■■■■ changed files
program/include/rcmail.php 51 ●●●●● patch | view | raw | blame | history
program/steps/addressbook/func.inc 14 ●●●●● patch | view | raw | blame | history
program/include/rcmail.php
@@ -244,6 +244,7 @@
  /**
   * Return instance of the internal address book class
   *
   * @param string  Address book identifier
   * @param boolean True if the address book needs to be writeable
   * @return object rcube_contacts Address book object
   */
@@ -274,12 +275,60 @@
        }
      }
    }
    else {
    else { // $id == 'sql'
      $contacts = new rcube_contacts($this->db, $this->user->ID);
    }
    
    return $contacts;
  }
  /**
   * Return address books list
   *
   * @param boolean True if the address book needs to be writeable
   * @return array  Address books array
   */
  public function get_address_sources($writeable = false)
  {
    $abook_type = strtolower($this->config->get('address_book_type'));
    $ldap_config = (array)$this->config->get('ldap_public');
    $autocomplete = (array)$this->config->get('autocomplete_addressbooks');
    $list = array();
    // We are using the DB address book
    if ($abook_type != 'ldap') {
      $list['0'] = array(
        'id' => 0,
    'name' => rcube_label('personaladrbook'),
        'readonly' => false,
    'autocomplete' => in_array('sql', $autocomplete)
      );
    }
    if (is_array($ldap_config)) {
      foreach ($ldap_config as $id => $prop)
        $list[$id] = array(
      'id' => $id,
      'name' => $prop['name'],
      'readonly' => !$prop['writable'],
      'autocomplete' => in_array('sql', $autocomplete)
        );
    }
    $plugin = $this->plugins->exec_hook('address_sources', array('sources' => $list));
    $list = $plugin['sources'];
    if ($writeable && !empty($list)) {
      foreach ($list as $idx => $item) {
        if ($item['readonly']) {
      unset($list[$idx]);
        }
      }
    }
    return $list;
  }
  
  
  /**
program/steps/addressbook/func.inc
@@ -20,18 +20,7 @@
*/
// 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'];
$js_list = $RCMAIL->get_address_sources();
// select source
$source = get_input_value('_source', RCUBE_INPUT_GPC);
@@ -39,7 +28,6 @@
// 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);