/** * Validate a user object. * * Invokes User::validate(), and additionally tests that the User's email address isn't associated with another User. * * @param User $user * @return array An array of error messages, or an empty array if the User is valid. */ public function validate(User $user) { $errors = $user->validate(); $duplicates = $this->findBy(array('email' => $user->getEmail())); if (!empty($duplicates)) { foreach ($duplicates as $dup) { if ($user->getId() && $dup->getId() == $user->getId()) { continue; } $errors['email'] = 'An account with that email address already exists.'; } } return $errors; }