function test1() { $userOwner = new UserAccountModel(); $userOwner->setEmail("*****@*****.**"); $userOwner->setUsername("test2"); $userOwner->setPassword("password"); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $userRepo->create($userOwner); $site = new SiteModel(); $site->setTitle("Test"); $site->setSlug("test"); $siteRepo = new SiteRepository(); $siteRepo->create($site, $userOwner, array(), $this->getSiteQuotaUsedForTesting()); $userWatchesSiteRepo = new UserWatchesSiteRepository(); # Part 1: User does not watch site $t = $userWatchesSiteRepo->loadByUserAndSite($user, $site); $this->assertNull($t); $b = new UserWatchesSiteRepositoryBuilder(); $t = $b->fetchAll(); $this->assertEquals(1, count($t)); # Part 2: Watches! $userWatchesSiteRepo->startUserWatchingSite($user, $site); $t = $userWatchesSiteRepo->loadByUserAndSite($user, $site); $this->assertEquals($user->getId(), $t->getUserAccountId()); $this->assertEquals(true, $t->getIsWatching()); $this->assertEquals(true, $t->getIsWasOnceWatching()); $b = new UserWatchesSiteRepositoryBuilder(); $t = $b->fetchAll(); $this->assertEquals(2, count($t)); # Part 3: Stops Watching! $userWatchesSiteRepo->stopUserWatchingSite($user, $site); $t = $userWatchesSiteRepo->loadByUserAndSite($user, $site); $this->assertEquals(false, $t->getIsWatching()); $this->assertEquals(true, $t->getIsWasOnceWatching()); $b = new UserWatchesSiteRepositoryBuilder(); $t = $b->fetchAll(); $this->assertEquals(1, count($t)); }
function stopWatchingFromEmail($userid, $code, Request $request, Application $app) { $userRepo = new UserAccountRepository(); $user = $userRepo->loadByID($userid); if (!$user) { $app['monolog']->addError("Failed stop watching site from email - user not known"); die("NO"); // TODO } $userWatchesSiteStopRepo = new UserWatchesSiteStopRepository(); $userWatchesSiteStop = $userWatchesSiteStopRepo->loadByUserAccountIDAndSiteIDAndAccessKey($user->getId(), $app['currentSite']->getId(), $code); if (!$userWatchesSiteStop) { $app['monolog']->addError("Failed stop watching site from email - user " . $user->getId() . " - code wrong"); die("NO"); // TODO } $userWatchesSiteRepo = new UserWatchesSiteRepository(); $userWatchesSite = $userWatchesSiteRepo->loadByUserAndSite($user, $app['currentSite']); if (!$userWatchesSite || !$userWatchesSite->getIsWatching()) { $app['monolog']->addError("Failed stop watching site from email - user " . $user->getId() . " - not watching"); die("You don't watch this site"); // TODO } if ($request->request->get('action') == 'unwatch' && $request->request->get('CSFRToken') == $app['websession']->getCSFRToken()) { $userWatchesSiteRepo->stopUserWatchingSite($user, $app['currentSite']); // redirect here because if we didn't the twig global and $app vars would be wrong (the old state) // this is an easy way to get round that. $app['flashmessages']->addMessage("You have stopped watching this."); return $app->redirect('/'); } return $app['twig']->render('site/index/stopWatchingFromEmail.html.twig', array('user' => $user)); }
/** * One event, 31 days from now, then 30 days, then 29 days, etc, only 1 email sent * @global type $CONFIG */ function test6() { global $CONFIG; $CONFIG->userWatchesPromptEmailSafeGapDays = 30; \TimeSource::mock(2013, 1, 1, 0, 0, 0); $user = new UserAccountModel(); $user->setEmail("*****@*****.**"); $user->setUsername("test"); $user->setPassword("password"); $userRepo = new UserAccountRepository(); $userRepo->create($user); $site = new SiteModel(); $site->setTitle("Test"); $site->setSlug("test"); $siteRepo = new SiteRepository(); $siteRepo->create($site, $user, array(), $this->getSiteQuotaUsedForTesting()); $group = new GroupModel(); $group->setTitle("Group"); $groupRepo = new GroupRepository(); $groupRepo->create($group, $site, $user); $event = new EventModel(); $start = \TimeSource::getDateTime(); $start->setDate(2013, 30, 9); $start->setTime(9, 0, 0); $event->setStartAt($start); $end = \TimeSource::getDateTime(); $end->setDate(2013, 30, 9); $end->setTime(12, 0, 0); $event->setEndAt($end); $eventRepo = new EventRepository(); $eventRepo->create($event, $site, $user, $group); // User will watch site automatically in site->create() // We don't want that, we want the group instead $userWatchesSiteRepo = new UserWatchesSiteRepository(); $userWatchesSiteRepo->stopUserWatchingSite($user, $site); $userWatchesGroupRepo = new UserWatchesGroupRepository(); $userWatchesGroupRepo->startUserWatchingGroup($user, $group); #Before email sent! for ($day = 1; $day <= 29; $day++) { \TimeSource::mock(2013, $day, 8, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); } #Email sent! \TimeSource::mock(2013, 30, 8, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertTrue($data['moreEventsNeeded']); $userWatchesGroupRepo->markPromptEmailSent($userWatchesGroup, \TimeSource::getDateTime()); #After email sent \TimeSource::mock(2013, 31, 8, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); for ($day = 1; $day <= 30; $day++) { \TimeSource::mock(2013, $day, 9, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); } for ($day = 1; $day <= 31; $day++) { \TimeSource::mock(2013, $day, 10, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); } for ($day = 1; $day <= 30; $day++) { \TimeSource::mock(2013, $day, 11, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); } for ($day = 1; $day <= 31; $day++) { \TimeSource::mock(2013, $day, 12, 1, 0, 0); $userWatchesGroup = $userWatchesGroupRepo->loadByUserAndGroup($user, $group); $data = $userWatchesGroup->getPromptEmailData($site, $eventRepo->loadLastNonDeletedNonImportedByStartTimeInGroupId($group->getId())); $this->assertFalse($data['moreEventsNeeded']); } }