diff --git a/include/class.user.php b/include/class.user.php index 1dd4736b2740c2ecdbed95b228bef50d02f637b0..165eebb100afe5c47ecf9b056d65f35f19f0cee5 100644 --- a/include/class.user.php +++ b/include/class.user.php @@ -488,42 +488,51 @@ implements TemplateVariable { $valid = false; elseif (!$staff && !$entry->isValidForClient()) $valid = false; - elseif (($form= $entry->getDynamicForm()) - && $form->get('type') == 'U' - && ($f=$form->getField('email')) - && $f->getClean() - && ($u=User::lookup(array('emails__address'=>$f->getClean()))) - && $u->id != $this->getId()) { + elseif ($entry->getDynamicForm()->get('type') == 'U' + && ($f=$entry->getField('email')) + && $f->getClean() + && ($u=User::lookup(array('emails__address'=>$f->getClean()))) + && $u->id != $this->getId()) { $valid = false; $f->addError(__('Email is assigned to another user')); } + + if (!$valid) + $errors = array_merge($errors, $entry->errors()); } + if (!$valid) return false; + // Save the entries foreach ($forms as $entry) { - if (($f=$entry->getDynamicForm()) && $f->get('type') == 'U') { - if (($name = $f->getField('name'))) { + if ($entry->getDynamicForm()->get('type') == 'U') { + // Name field + if (($name = $entry->getField('name'))) { $name = $name->getClean(); if (is_array($name)) $name = implode(', ', $name); $this->name = $name; } - if (($email = $f->getField('email'))) { + // Email address field + if (($email = $entry->getField('email'))) { $this->default_email->address = $email->getClean(); $this->default_email->save(); } } + // DynamicFormEntry::save returns the number of answers updated if ($entry->save()) { $this->updated = SqlFunction::NOW(); } } + return $this->save(); } + function save($refetch=false) { // Drop commas and reorganize the name without them $parts = array_map('trim', explode(',', $this->name));