From 63d6e6dfc35e6d82c4a64f37c408794c163becd4 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Wed, 28 Sep 2011 15:16:41 -0400 Subject: [PATCH] Bump versions to 0.6 stable --- program/steps/mail/addcontact.inc | 36 +++++++++++++++++++++++++++--------- 1 files changed, 27 insertions(+), 9 deletions(-) diff --git a/program/steps/mail/addcontact.inc b/program/steps/mail/addcontact.inc index d46db8e..b74d95f 100644 --- a/program/steps/mail/addcontact.inc +++ b/program/steps/mail/addcontact.inc @@ -5,7 +5,7 @@ | program/steps/mail/addcontact.inc | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2009, Roundcube Dev. - Switzerland | + | Copyright (C) 2005-2009, The Roundcube Dev Team | | Licensed under the GNU GPL | | | | PURPOSE: | @@ -23,24 +23,42 @@ if (!$OUTPUT->ajax_call) return; -$done = false; -$CONTACTS = $RCMAIL->get_address_book(null, true); +$abook = $RCMAIL->config->get('default_addressbook'); + +// Get configured addressbook +$CONTACTS = $RCMAIL->get_address_book($abook, true); + +// Get first writeable addressbook if the configured doesn't exist +// This can happen when user deleted the addressbook (e.g. Kolab folder) +if ($abook == null || !is_object($CONTACTS)) { + $source = reset($RCMAIL->get_address_sources(true)); + $CONTACTS = $RCMAIL->get_address_book($source['id'], true); +} if (!empty($_POST['_address']) && is_object($CONTACTS)) { $contact_arr = $IMAP->decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false); - + if (!empty($contact_arr[1]['mailto'])) { $contact = array( 'email' => $contact_arr[1]['mailto'], 'name' => $contact_arr[1]['name'] ); - $contact['email'] = idn_to_utf8($contact['email']); + // Validity checks + if (empty($contact['email'])) { + $OUTPUT->show_message('errorsavingcontact', 'error'); + $OUTPUT->send(); + } + + $email = rcube_idn_to_ascii($contact['email']); + if (!check_email($email, false)) { + $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email'])); + $OUTPUT->send(); + } - // use email address part for name - if (empty($contact['name']) || $contact['name'] == $contact['email']) - $contact['name'] = ucfirst(preg_replace('/[\.\-]/', ' ', substr($contact['email'], 0, strpos($contact['email'], '@')))); + $contact['email'] = rcube_idn_to_utf8($contact['email']); + $contact['name'] = rcube_addressbook::compose_display_name($contact); // check for existing contacts $existing = $CONTACTS->search('email', $contact['email'], true, false); @@ -60,7 +78,7 @@ } if (!$done) - $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'warning'); + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'error'); $OUTPUT->send(); -- Gitblit v1.9.1