/** * @depends test_createUser */ public function test_createComp($User) { $Comp = new Competition(); $Comp->title = "Test competition"; $Comp->theme = "Test comp theme"; $Comp->setAuthor($User); $Comp->SubmissionsDateOpen = (new DateTime())->add(new DateInterval("P1D")); $Comp->SubmissionsDateClose = (new DateTime())->add(new DateInterval("P3D")); $Comp->VotingDateOpen = (new DateTime())->add(new DateInterval("P5D")); $Comp->VotingDateClose = (new DateTime())->add(new DateInterval("P10D")); $Comp->commit(); $Comp = new Competition($Comp->id); $this->assertEquals(Competitions::STATUS_CLOSED, $Comp->status); $this->assertFalse(!filter_var($Comp->id, FILTER_VALIDATE_INT)); $this->assertFalse($Comp->canUserVote($User)); $this->assertFalse($Comp->canUserSubmitPhoto($User)); $Comp->SubmissionsDateOpen = (new DateTime())->sub(new DateInterval("P1D")); $Comp->SubmissionsDateClose = (new DateTime())->add(new DateInterval("P3D")); $Comp->VotingDateOpen = (new DateTime())->add(new DateInterval("P5D")); $Comp->VotingDateClose = (new DateTime())->add(new DateInterval("P10D")); $this->assertTrue(CompetitionUtility::isSubmissionWindowOpen($Comp)); $this->assertFalse(CompetitionUtility::isVotingWindowOpen($Comp)); $Comp->status = Competitions::STATUS_OPEN; $Comp->commit(); $DummyUser = new User(); $this->assertFalse($Comp->canUserVote($DummyUser)); $this->assertFalse($Comp->canUserSubmitPhoto($DummyUser)); return $Comp; }
/** * Notify participants that this competition is open for voting * @since Version 3.9.1 * @return \Railpage\Images\Competition * @todo Check recipient preferences for email notifications */ private function notifyVotingOpen() { /** * Return if we're not within the voting bounds */ if (!Utility\CompetitionUtility::isVotingWindowOpen($this)) { return $this; } $body = sprintf("Hi [username],\n\nWe wanted to let you know that the <a href='%s'>%s</a> photo competition is open for voting until %s.\n\nYou've received this email because you've participated in a previous photo competition.\n\nThanks\nThe Railpage team.", $this->url->email, $this->title, $this->VotingDateClose->format("F jS")); $notificationOptions = array("flag" => __FUNCTION__, "subject" => sprintf("Voting open: %s", $this->title), "body" => $body); Utility\CompetitionUtility::sendNotification($this, $notificationOptions); return $this; }