anchor.diff:  Returns *false* if '$username' is a username in use already in the database, otherwise returns *true*.
   
   
  +=== Email
  +
  +==== getEmail() : string
  +
  +Returns the *email* of the user.
  +
  +
  +==== setEmail(string $email) : void
  +
  +Updates the user's *email* in the database.
  +Throws a *UserException* with code *104* if '$email' is invalid, code *105* if unavailable.
  +See *validEmail()* & *availableEmail()* for more details.
  +
  +
  +==== validEmail(string $email) : bool
  +
  +Returns *true* if '$email' is a \'valid' email, otherwise *false*.
  +Validity is determined by a regex loaded from the *email_regex* parameter in the *[user]* section of config files.
  +
  +
  +==== availableEmail(string $email) : bool
  +
  +Returns *false* if '$email' is an email in use already in the database, otherwise returns *true*.
  +
  +
   === Instance methods
   
   ==== getID() : int
   
   Returns the unique *id* of the user.
  -
  -
  -==== getEmail() : string
  -
  -Returns the *email* of the user.
   
   
   ==== getRegisterTime() : int
  
positive.code: The password is currently always hashed with the 'BCRYPT' algorithm with the cost being controlled by the *password_hash_cost* config parameter under the *[user]* section.
  Throws a *UserException* with code *106* if '$password' is invalid.
  See *validPassword()* for more details.
  
  
  ==== setEmail(string $email) : void
  
  Updates the user's *email* in the database.
  Throws a *UserException* with code *104* if '$email' is invalid, code *105* if unavailable.
  See *validEmail()* & *availableEmail()* for more details.
  
  
  ==== checkPassword(string $password) : bool
  
negative.code: This function needs to send cookie headers and so must be called before any output.
  
  
  ==== validPassword(string $password) : bool
  
  Returns *true* if '$password' is a valid password, otherwise *false*.
  