Let rcmail class create address book instances

release-0.6
thomascube 16 years ago
parent e7f85bd274
commit ade8e117df

@ -234,6 +234,38 @@ class rcmail
}
/**
* Return instance of the internal address book class
*
* @param boolean True if the address book needs to be writeable
* @return object rcube_contacts Address book object
*/
public function get_address_book($id, $writeable = false)
{
$contacts = null;
$ldap_config = (array)$this->config->get('ldap_public');
$abook_type = strtolower($this->config->get('address_book_type'));
if ($id && $ldap_config[$id]) {
$contacts = new rcube_ldap($ldap_config[$id]);
}
else if ($abook_type == 'ldap') {
// Use the first writable LDAP address book.
foreach ($ldap_config as $id => $prop) {
if (!$writeable || $prop['writable']) {
$contacts = new rcube_ldap($prop);
break;
}
}
}
else {
$contacts = new rcube_contacts($this->db, $this->user->ID);
}
return $contacts;
}
/**
* Init output object for GUI and add common scripts.
* This will instantiate a rcmail_template object and set

@ -23,12 +23,9 @@ $cid = get_input_value('_cid', RCUBE_INPUT_POST);
$target = get_input_value('_to', RCUBE_INPUT_POST);
if ($cid && preg_match('/^[a-z0-9\-_=]+(,[a-z0-9\-_=]+)*$/i', $cid) && strlen($target) && $target != $source)
{
if ($target != '0')
$TARGET = new rcube_ldap($CONFIG['ldap_public'][$target]);
else
$TARGET = new rcube_contacts($DB, $_SESSION['user_id']);
$success = false;
$success = false;
$TARGET = $RCMAIL->get_address_book($target);
if ($TARGET && $TARGET->ready && !$TARGET->readonly)
$success = $TARGET->insert($CONTACTS->search($CONTACTS->primary_key, $cid), true);

@ -20,16 +20,7 @@
*/
// instantiate a contacts object according to the given source
if (($source = get_input_value('_source', RCUBE_INPUT_GPC)) && isset($CONFIG['ldap_public'][$source]))
$CONTACTS = new rcube_ldap($CONFIG['ldap_public'][$source]);
else if (strtolower($CONFIG['address_book_type']) == 'ldap') {
// Get the first LDAP address book.
$source = key((array)$CONFIG['ldap_public']);
$prop = current((array)$CONFIG['ldap_public']);
$CONTACTS = new rcube_ldap($prop);
} else {
$CONTACTS = new rcube_contacts($DB, $_SESSION['user_id']);
} // end else
$CONTACTS = $RCMAIL->get_address_book(($source = get_input_value('_source', RCUBE_INPUT_GPC)));
$CONTACTS->set_pagesize($CONFIG['pagesize']);

@ -20,22 +20,10 @@
*/
$done = false;
$CONTACTS = $RCMAIL->get_address_book(null, true);
if (!empty($_POST['_address']))
if (!empty($_POST['_address']) && is_object($CONTACTS))
{
$CONTACTS = array();
if (strtolower($CONFIG['address_book_type']) == 'ldap') {
// Use the first writable LDAP address book.
foreach ($CONFIG["ldap_public"] as $id => $prop) {
if ($prop["writable"]) {
$CONTACTS = new rcube_ldap($prop);
break;
} // end if
} // end foreach
} // end if
else {
$CONTACTS = new rcube_contacts($DB, $_SESSION['user_id']);
} // end else
$contact_arr = $IMAP->decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false);
if (!empty($contact_arr[1]['mailto']))

Loading…
Cancel
Save