/**
  * 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;
 }