summaryrefslogtreecommitdiff
path: root/program/steps/mail/addcontact.inc
diff options
context:
space:
mode:
Diffstat (limited to 'program/steps/mail/addcontact.inc')
-rw-r--r--program/steps/mail/addcontact.inc121
1 files changed, 63 insertions, 58 deletions
diff --git a/program/steps/mail/addcontact.inc b/program/steps/mail/addcontact.inc
index 9d16e094b..76bf2ee32 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, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,69 +20,74 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
- return;
+if (!$OUTPUT->ajax_call) {
+ return;
+}
// Get default addressbook
$CONTACTS = $RCMAIL->get_address_book(-1, true);
-if (!empty($_POST['_address']) && is_object($CONTACTS))
-{
- $contact_arr = rcube_mime::decode_address_list(rcube_utils::get_input_value('_address', rcube_utils::INPUT_POST, true), 1, false);
-
- if (!empty($contact_arr[1]['mailto'])) {
- $contact = array(
- 'email' => $contact_arr[1]['mailto'],
- 'name' => $contact_arr[1]['name']
- );
-
- // Validity checks
- if (empty($contact['email'])) {
- $OUTPUT->show_message('errorsavingcontact', 'error');
- $OUTPUT->send();
- }
-
- $email = rcube_utils::idn_to_ascii($contact['email']);
- if (!rcube_utils::check_email($email, false)) {
- $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email']));
- $OUTPUT->send();
+if (!empty($_POST['_address']) && is_object($CONTACTS)) {
+ $address = rcube_utils::get_input_value('_address', rcube_utils::INPUT_POST, true);
+ $contact_arr = rcube_mime::decode_address_list($address, 1, false);
+
+ if (!empty($contact_arr[1]['mailto'])) {
+ $contact = array(
+ 'email' => $contact_arr[1]['mailto'],
+ 'name' => $contact_arr[1]['name'],
+ );
+
+ // Validity checks
+ if (empty($contact['email'])) {
+ $OUTPUT->show_message('errorsavingcontact', 'error');
+ $OUTPUT->send();
+ }
+
+ $email = rcube_utils::idn_to_ascii($contact['email']);
+ if (!rcube_utils::check_email($email, false)) {
+ $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email']));
+ $OUTPUT->send();
+ }
+
+ $contact['email'] = rcube_utils::idn_to_utf8($contact['email']);
+
+ $contact = $RCMAIL->plugins->exec_hook('contact_displayname', $contact);
+
+ if (empty($contact['firstname']) || empty($contact['surname'])) {
+ $contact['name'] = rcube_addressbook::compose_display_name($contact);
+ }
+
+ // validate contact record
+ if (!$CONTACTS->validate($contact, true)) {
+ $error = $CONTACTS->get_error();
+ // TODO: show dialog to complete record
+ // if ($error['type'] == rcube_addressbook::ERROR_VALIDATE) { }
+
+ $OUTPUT->show_message($error['message'] ? $error['message'] : 'errorsavingcontact', 'error');
+ $OUTPUT->send();
+ }
+
+ // check for existing contacts
+ $existing = $CONTACTS->search('email', $contact['email'], 1, false);
+
+ if ($done = $existing->count) {
+ $OUTPUT->show_message('contactexists', 'warning');
+ }
+ else {
+ $plugin = $RCMAIL->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
+ $contact = $plugin['record'];
+
+ $done = !$plugin['abort'] ? $CONTACTS->insert($contact) : $plugin['result'];
+
+ if ($done) {
+ $OUTPUT->show_message('addedsuccessfully', 'confirmation');
+ }
+ }
}
-
- $contact['email'] = rcube_utils::idn_to_utf8($contact['email']);
- $contact = $RCMAIL->plugins->exec_hook('contact_displayname', $contact);
-
- if (empty($contact['firstname']) || empty($contact['surname']))
- $contact['name'] = rcube_addressbook::compose_display_name($contact);
-
- // validate contact record
- if (!$CONTACTS->validate($contact, true)) {
- $error = $CONTACTS->get_error();
- // TODO: show dialog to complete record
- // if ($error['type'] == rcube_addressbook::ERROR_VALIDATE) { }
-
- $OUTPUT->show_message($error['message'] ? $error['message'] : 'errorsavingcontact', 'error');
- $OUTPUT->send();
- }
-
- // check for existing contacts
- $existing = $CONTACTS->search('email', $contact['email'], 1, false);
-
- if ($done = $existing->count)
- $OUTPUT->show_message('contactexists', 'warning');
- else {
- $plugin = $RCMAIL->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
- $contact = $plugin['record'];
-
- $done = !$plugin['abort'] ? $CONTACTS->insert($contact) : $plugin['result'];
-
- if ($done)
- $OUTPUT->show_message('addedsuccessfully', 'confirmation');
- }
- }
}
-if (!$done)
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'error');
+if (!$done) {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'error');
+}
$OUTPUT->send();
-