public function create(UserAccountModel $user)
 {
     global $DB;
     $uar = new UserAccountResetModel();
     $uar->setUserAccountId($user->getId());
     $uar->setAccessKey(createKey(2, 250));
     // TODO check not already used
     $stat = $DB->prepare("INSERT INTO user_account_reset (user_account_id, access_key, created_at) " . "VALUES (:user_account_id, :access_key, :created_at)");
     $stat->execute(array('user_account_id' => $uar->getUserAccountId(), 'access_key' => $uar->getAccessKey(), 'created_at' => \TimeSource::getFormattedForDataBase()));
     $data = $stat->fetch();
     return $uar;
 }
 public function resetAccount(UserAccountModel $user, UserAccountResetModel $reset)
 {
     global $DB;
     try {
         $DB->beginTransaction();
         $stat = $DB->prepare("UPDATE user_account_information SET  password_hash=:password_hash WHERE id =:id");
         $stat->execute(array('id' => $user->getId(), 'password_hash' => $user->getPasswordHash()));
         $stat = $DB->prepare("UPDATE user_account_reset SET  reset_at=:reset_at WHERE user_account_id =:user_account_id AND access_key=:access_key");
         $stat->execute(array('user_account_id' => $user->getId(), 'access_key' => $reset->getAccessKey(), 'reset_at' => \TimeSource::getFormattedForDataBase()));
         $DB->commit();
     } catch (Exception $e) {
         $DB->rollBack();
     }
 }