- Added function to get addressbooks list rcmail::get_address_sources() (#1486248)

release-0.6
alecpl 15 years ago
parent 47ad83f337
commit 3704b78841

@ -244,6 +244,7 @@ class rcmail
/**
* 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 @@ class rcmail
}
}
}
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;
}
/**

@ -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);
@ -40,7 +29,6 @@ $source = get_input_value('_source', RCUBE_INPUT_GPC);
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);

Loading…
Cancel
Save