function test2()
 {
     $user = new UserAccountModel();
     $user->setEmail("*****@*****.**");
     $user->setUsername("test");
     $user->setPassword("password");
     $userRepo = new UserAccountRepository();
     $userRepo->create($user);
     $userAccountResetRepository = new UserAccountResetRepository();
     # Test1: recently unused is null
     TimeSource::mock(2013, 1, 1, 1, 0, 1);
     $x = $userAccountResetRepository->loadRecentlyUnusedSentForUserAccountId($user->getId(), 180);
     $this->assertNull($x);
     # Test2: Request one
     TimeSource::mock(2013, 1, 1, 1, 0, 2);
     $userAccountReset = $userAccountResetRepository->create($user);
     #Test 3: recently unused has one
     TimeSource::mock(2013, 1, 1, 1, 0, 3);
     $x = $userAccountResetRepository->loadRecentlyUnusedSentForUserAccountId($user->getId(), 180);
     $this->assertTrue($x != null);
     # Test4: days pass. recently unused is null again
     TimeSource::mock(2013, 1, 5, 1, 0, 5);
     $x = $userAccountResetRepository->loadRecentlyUnusedSentForUserAccountId($user->getId(), 180);
     $this->assertNull($x);
 }
 function forgot(Request $request, Application $app)
 {
     $form = $app['form.factory']->create(new ForgotUserForm());
     if ('POST' == $request->getMethod()) {
         $form->bind($request);
         if ($form->isValid()) {
             $data = $form->getData();
             $userRepository = new UserAccountRepository();
             if ($data['email']) {
                 $user = $userRepository->loadByEmail($data['email']);
             } else {
                 if ($data['username']) {
                     $user = $userRepository->loadByUserName($data['username']);
                 }
             }
             if ($user) {
                 if ($user->getIsClosedBySysAdmin()) {
                     $form->addError(new FormError('There was a problem with this account and it has been closed: ' . $user->getClosedBySysAdminReason()));
                 } else {
                     $aurr = new UserAccountResetRepository();
                     $uarLast = $aurr->loadRecentlyUnusedSentForUserAccountId($user->getId(), $app['config']->resetEmailsGapBetweenInSeconds);
                     if ($uarLast) {
                         $form->addError(new FormError('An email was sent recently; please try again soon'));
                     } else {
                         $uar = $aurr->create($user);
                         $uar->sendEmail($app, $user);
                         return $app['twig']->render('index/user/forgotDone.html.twig', array());
                     }
                 }
             } else {
                 $form->addError(new FormError('User not known'));
             }
         }
     }
     return $app['twig']->render('index/user/forgot.html.twig', array('form' => $form->createView()));
 }