/**
  * 
  * @return \models\UserAccountResetModel A single one or NULL. Technically it may load multiple ones, but we only return one.
  */
 public function loadRecentlyUnusedSentForUserAccountId($id, $seconds = 60)
 {
     global $DB;
     $stat = $DB->prepare("SELECT user_account_reset.* FROM user_account_reset WHERE reset_at IS NULL AND user_account_id =:user_account_id AND created_at > :since");
     $time = \TimeSource::getDateTime();
     $time->setTimestamp($time->getTimestamp() - $seconds);
     $stat->execute(array('user_account_id' => $id, 'since' => $time->format('Y-m-d H:i:s')));
     if ($stat->rowCount() > 0) {
         $uar = new UserAccountResetModel();
         $uar->setFromDataBaseRow($stat->fetch());
         return $uar;
     }
 }
 public function fetchAll()
 {
     $this->buildStart();
     $this->build();
     $this->buildStat();
     $results = array();
     while ($data = $this->stat->fetch()) {
         $uwgm = new UserAccountResetModel();
         $uwgm->setFromDataBaseRow($data);
         $results[] = $uwgm;
     }
     return $results;
 }
 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();
     }
 }