From 07b95dc49b31d131b1fecdabf2059a447935c196 Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Sun, 06 Feb 2011 17:21:23 -0500
Subject: [PATCH] Delegate contact input validation to rcube_addressbook instance; accept already localized texts in rcube_output::show_message()

---
 program/steps/addressbook/save.inc |   29 ++++++++++-------------------
 1 files changed, 10 insertions(+), 19 deletions(-)

diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index 3d55d95..10155a1 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -128,27 +128,18 @@
   }
 }
 
-if (empty($a_record['name']))
-  $a_record['name'] = join(' ', array_filter(array($a_record['prefix'], $a_record['firstname'], $a_record['middlename'], $a_record['surname'], $a_record['suffix'],)));
-
-
-// Basic input checks (TODO: delegate to $CONTACTS instance)
-if (empty($a_record['name'])/* || empty($a_record['email'])*/) {
-  $OUTPUT->show_message('formincomplete', 'warning');
-  rcmail_overwrite_action($return_action);
-  return;
+if (empty($a_record['name'])) {
+    // TODO: let a dedicated function or a plugin compose the full name
+    $a_record['name'] = join(' ', array_filter(array($a_record['prefix'], $a_record['firstname'], $a_record['middlename'], $a_record['surname'], $a_record['suffix'],)));
 }
 
-// Validity checks
-foreach ($CONTACTS->get_col_values('email', $a_record, true) as $email) {
-  if (strlen($email)) {
-    $_email = rcube_idn_to_ascii($email);
-    if (!check_email($_email)) {
-      $OUTPUT->show_message('emailformaterror', 'warning', array('email' => $email));
-      rcmail_overwrite_action($return_action);
-      return;
-    }
-  }
+
+// do input checks (delegated to $CONTACTS instance)
+if (!$CONTACTS->validate($a_record)) {
+    $err = (array)$CONTACTS->get_error() + array('message' => 'formincomplete', 'type' => 'warning');
+    $OUTPUT->show_message($err['message'], $err['type']);
+    rcmail_overwrite_action($return_action);
+    return;
 }
 
 // get raw photo data if changed

--
Gitblit v1.9.1