| | |
| | | public function validate(&$save_data, $autofix = false) |
| | | { |
| | | $rcube = rcube::get_instance(); |
| | | $valid = true; |
| | | |
| | | // check validity of email addresses |
| | | foreach ($this->get_col_values('email', $save_data, true) as $email) { |
| | |
| | | if (!rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) { |
| | | $error = $rcube->gettext(array('name' => 'emailformaterror', 'vars' => array('email' => $email))); |
| | | $this->set_error(self::ERROR_VALIDATE, $error); |
| | | return false; |
| | | $valid = false; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | return true; |
| | | // require at least one email address or a name |
| | | if ($valid && !strlen($save_data['firstname'].$save_data['surname'].$save_data['name']) && !array_filter($this->get_col_values('email', $save_data, true))) { |
| | | $this->set_error(self::ERROR_VALIDATE, 'noemailwarning'); |
| | | $valid = false; |
| | | } |
| | | |
| | | // allow plugins to do contact validation and auto-fixing |
| | | $plugin = $rcube->plugins->exec_hook('contact_validate', array( |
| | | 'record' => $save_data, |
| | | 'autofix' => $autofix, |
| | | 'valid' => $valid, |
| | | )); |
| | | |
| | | if (is_array($plugin['record'])) { |
| | | $save_data = $plugin['record']; |
| | | } |
| | | |
| | | return $plugin['valid']; |
| | | } |
| | | |
| | | /** |