diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php
index 381423f..af6e43b 100755
--- a/src/Controller/AdminController.php
+++ b/src/Controller/AdminController.php
@@ -83,14 +83,14 @@ class AdminController extends EmailsController {
// TODO
// fetch old polls and store their properties in new poll objects
- $foundPolls = [];
+ $foundPolls = [];
$database_name = 'symfony';
$em = $this->getDoctrine()->getManager();
$emPoll = $this->getDoctrine()->getRepository( Poll::class );
return $this->json( [
- 'message' => 'migration done for: ' . count( $foundPolls ). ' - this feature is not ready to work YET.',
+ 'message' => 'migration done for: ' . count( $foundPolls ) . ' - this feature is not ready to work YET.',
'data' => [
'count' => count( $foundPolls ),
],
diff --git a/src/Controller/DefaultController.php b/src/Controller/DefaultController.php
index 338be79..eb94c64 100755
--- a/src/Controller/DefaultController.php
+++ b/src/Controller/DefaultController.php
@@ -2,14 +2,9 @@
namespace App\Controller;
-use App\Entity\Owner;
use App\Entity\Poll;
-use App\Repository\PollRepository;
-use App\Service\MailService;
use FOS\RestBundle\Controller\Annotations\Get;
use FOS\RestBundle\Controller\Annotations\Route;
-use JMS\Serializer\Type\Exception\Exception;
-use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
/**
diff --git a/src/Controller/EmailsController.php b/src/Controller/EmailsController.php
index 1a3ee06..187d09a 100644
--- a/src/Controller/EmailsController.php
+++ b/src/Controller/EmailsController.php
@@ -5,8 +5,10 @@ namespace App\Controller;
use App\Entity\Owner;
use App\Entity\Poll;
use JMS\Serializer\Type\Exception\Exception;
+use Swift_Mailer;
use Swift_Message;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
+use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
/**
* sending emails controller
@@ -18,16 +20,37 @@ class EmailsController extends AbstractController {
private $mail_service;
- public function __construct( \Swift_Mailer $mailer ) {
+ public function __construct( Swift_Mailer $mailer ) {
$this->mail_service = $mailer;
}
+ /**
+ * send created polls to an owner
+ *
+ * @param Owner $owner
+ *
+ * @return int|void
+ * @throws Exception
+ * @throws TransportExceptionInterface
+ */
+ public function sendOwnerPollsAction( Owner $owner ) {
+
+ $config = [
+ 'owner' => $owner,
+ 'title' => $this->getParameter( 'WEBSITE_NAME' ) . ' | Mes sondages',
+ 'email_template' => 'emails/owner-list.html.twig',
+ ];
+ $this->sendMailWithVars( $config );
+
+ return 1;
+ }
+
/**
* generic way to send email with html template
*
* @param $config
*
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendMailWithVars( $config ) {
@@ -57,7 +80,7 @@ class EmailsController extends AbstractController {
$config[ 'email_template' ],
$config
);
- $message = ( new Swift_Message( $config[ 'title' ] ) )
+ $message = ( new Swift_Message( $config[ 'title' ] ) )
->setContentType( "text/html" )
->setCharset( 'UTF-8' )
->setFrom( [ 'ne-pas-repondre@framadate-api.cipherbliss.com' ] )
@@ -72,33 +95,11 @@ class EmailsController extends AbstractController {
}
-
- /**
- * send created polls to an owner
- *
- * @param Owner $owner
- *
- * @return int|void
- * @throws Exception
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
- */
- public function sendOwnerPollsAction( Owner $owner ) {
-
- $config = [
- 'owner' => $owner,
- 'title' => $this->getParameter( 'WEBSITE_NAME' ) . ' | Mes sondages',
- 'email_template' => 'emails/owner-list.html.twig',
- ];
- $this->sendMailWithVars( $config );
-
- return 1;
- }
-
/**
* @param Owner $foundOwner
* @param Poll|null $poll
*
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendCreationMailAction( Owner $foundOwner, Poll $poll = null ) {
@@ -120,14 +121,14 @@ class EmailsController extends AbstractController {
* @param $comment
*
* @return int
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendCommentNotificationAction( Owner $owner, $comment ) {
$config = [
'owner' => $owner,
- 'comment' => $comment,
- 'poll' => $comment->getPoll(),
+ 'comment' => $comment,
+ 'poll' => $comment->getPoll(),
'title' => 'Framadate | Commentaire de "' . $owner->getPseudo() . '" - sondage ' . $comment->getPoll()->getTitle(),
'email_template' => 'emails/comment-notification.html.twig',
];
@@ -141,14 +142,14 @@ class EmailsController extends AbstractController {
* @param $stackOfVotes
*
* @return int
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendVoteNotificationAction( Owner $owner, $stackOfVotes ) {
$config = [
'owner' => $owner,
- 'comment' => $stackOfVotes,
- 'poll' => $stackOfVotes->getPoll(),
+ 'comment' => $stackOfVotes,
+ 'poll' => $stackOfVotes->getPoll(),
'title' => 'Framadate | Vote de "' . $owner->getPseudo() . '" - sondage ' . $stackOfVotes->getPoll()->getTitle(),
'email_template' => 'emails/vote-notification.html.twig',
];
diff --git a/src/Controller/MigrationController.php b/src/Controller/MigrationController.php
index 6c22dd0..6eeb6b1 100755
--- a/src/Controller/MigrationController.php
+++ b/src/Controller/MigrationController.php
@@ -1,20 +1,19 @@
'NOPE! veuillez vérifier votre fichier .env',
] );
- };
+ }
// fetch old Database
$debug = '';
- $em = $this->getDoctrine()->getManager();
+ $em = $this->getDoctrine()->getManager();
$pollsBySlug = [];
- $pdo_options[ \PDO::ATTR_ERRMODE ] = \PDO::ERRMODE_EXCEPTION;
- $bdd = new \PDO( 'mysql:host=localhost;dbname=' . $this->getParameter( 'OLD_DATABASE_NAME' ),
+ $pdo_options[ PDO::ATTR_ERRMODE ] = PDO::ERRMODE_EXCEPTION;
+ $bdd = new PDO( 'mysql:host=localhost;dbname=' . $this->getParameter( 'OLD_DATABASE_NAME' ),
$this->getParameter( 'OLD_DATABASE_USER' ),
$this->getParameter( 'OLD_DATABASE_PASS' ),
$pdo_options );
- $res_polls = $bdd->query( 'SELECT * FROM fd_poll' );
- while ( $d = $res_polls->fetch( \PDO::FETCH_OBJ ) ) {
+ $res_polls = $bdd->query( 'SELECT * FROM fd_poll' );
+ while ( $d = $res_polls->fetch( PDO::FETCH_OBJ ) ) {
- $debug .= "
ajout de sondage : ".$d->title .' - '. $d->id ;
+ $debug .= "
ajout de sondage : " . $d->title . ' - ' . $d->id;
- $newPoll = new Poll();
- $owner = new Owner();
+ $newPoll = new Poll();
+ $owner = new Owner();
$owner->setEmail( $d->admin_mail )
->setPseudo( $d->admin_name )
- ->addPoll($newPoll);
+ ->addPoll( $newPoll );
$newPoll
->setOwner( $owner )
->setCustomURL( $d->id )
->setKind( $d->id === 'D' ? 'date' : 'text' )
- ->setHideResults( ! $d->results_publicly_visible )
+ ->setHideResults( ! $d->results_publicly_visible )
->setAdminKey( $d->admin_id )
->setTitle( $d->title )
->setVotesAllowed( $d->receiveNewVotes )
@@ -84,105 +83,102 @@ class MigrationController extends EmailsController {
$em->persist( $newPoll );
}
// get choices, slots and link them with poll by their slug
- $res_slots = $bdd->query( 'SELECT * FROM fd_slot' );
+ $res_slots = $bdd->query( 'SELECT * FROM fd_slot' );
$pollChoicesOrderedBySlug = [];
- $choicesCreated = [];
+ $choicesCreated = [];
- while ( $d = $res_slots->fetch( \PDO::FETCH_OBJ ) ) {
+ while ( $d = $res_slots->fetch( PDO::FETCH_OBJ ) ) {
- $debug .= "
ajout de slot, converti en choix de réponse : ".$d->poll_id. ' : '. $d->moments;
+ $debug .= "
ajout de slot, converti en choix de réponse : " . $d->poll_id . ' : ' . $d->moments;
$pollSlug = $d->poll_id;
- $poll = $pollsBySlug[$pollSlug];
+ $poll = $pollsBySlug[ $pollSlug ];
- $moments = explode(',' , $d->moments);
+ $moments = explode( ',', $d->moments );
foreach ( $moments as $moment ) {
- $newChoice = new Choice();
- $newChoice
- ->setPoll($poll)
- ->setDateTime(date_create( strtotime( $d->title)))
- ->setName($moment);
+ $newChoice = new Choice();
+ $newChoice
+ ->setPoll( $poll )
+ ->setDateTime( date_create( strtotime( $d->title ) ) )
+ ->setName( $moment );
- $pollChoicesOrderedBySlug[$pollSlug][] = $newChoice;
- $poll->addChoice($newChoice);
+ $pollChoicesOrderedBySlug[ $pollSlug ][] = $newChoice;
+ $poll->addChoice( $newChoice );
- $em->persist( $newChoice );
- $em->persist( $newPoll );
+ $em->persist( $newChoice );
+ $em->persist( $newPoll );
$choicesCreated[] = $newChoice;
}
}
// get votes
$stacksOfVote = [];
- $res_votes = $bdd->query( 'SELECT * FROM fd_vote' );
- while ( $d = $res_votes->fetch( \PDO::FETCH_OBJ ) ) {
+ $res_votes = $bdd->query( 'SELECT * FROM fd_vote' );
+ while ( $d = $res_votes->fetch( PDO::FETCH_OBJ ) ) {
- $debug .= "
ajout de stack de vote : ".$d->name;
+ $debug .= "
ajout de stack de vote : " . $d->name;
$pollSlug = $d->poll_id;
$poll = $pollsBySlug[ $pollSlug ];
$newStack = new StackOfVotes();
$newOwner = new Owner();
$newOwner
- ->setPseudo($d->name)
- ->setEmail('the_anonymous_email_from_@_migration_offramadate.org')
- ->setModifierToken($d->uniqId)
- ;
+ ->setPseudo( $d->name )
+ ->setEmail( 'the_anonymous_email_from_@_migration_offramadate.org' )
+ ->setModifierToken( $d->uniqId );
- $newStack->setPoll($poll)
- ->setOwner($newOwner)
- ->setPseudo($d->name)
- ;
+ $newStack->setPoll( $poll )
+ ->setOwner( $newOwner )
+ ->setPseudo( $d->name );
// each choice answer is encoded in a value :
- $voteCodes = str_split($d->choices);
+ $voteCodes = str_split( $d->choices );
// get choices of the poll and answer accordingly
- $ii=0;
+ $ii = 0;
foreach ( $voteCodes as $vote_code ) {
- if($vote_code !== ' '){
- $choice = $pollChoicesOrderedBySlug[$pollSlug][$ii];
+ if ( $vote_code !== ' ' ) {
+ $choice = $pollChoicesOrderedBySlug[ $pollSlug ][ $ii ];
$newVote = new Vote();
$newVote
- ->setChoice($choice)
- ->setStacksOfVotes($newStack)
- ->setPoll($poll)
- ->setValue( $this->mapAnswerNumberToWord($vote_code))
- ;
- $newStack->addVote($newVote);
+ ->setChoice( $choice )
+ ->setStacksOfVotes( $newStack )
+ ->setPoll( $poll )
+ ->setValue( $this->mapAnswerNumberToWord( $vote_code ) );
+ $newStack->addVote( $newVote );
$em->persist( $newVote );
$votes[] = $newVote;
}
- $ii++;
+ $ii ++;
}
- $poll->addStackOfVote($newStack);
+ $poll->addStackOfVote( $newStack );
$em->persist( $newStack );
$stacksOfVote[] = $newStack;
}
- $comments = [];
- $res_comments = $bdd->query( 'SELECT * FROM fd_comment' );
- while ( $d = $res_comments->fetch( \PDO::FETCH_OBJ ) ) {
+ $comments = [];
+ $res_comments = $bdd->query( 'SELECT * FROM fd_comment' );
+ while ( $d = $res_comments->fetch( PDO::FETCH_OBJ ) ) {
- $debug .= "
ajout de commentaire : ".$d->name. ' '. $d->comment;
+ $debug .= "
ajout de commentaire : " . $d->name . ' ' . $d->comment;
- $pollSlug = $d->poll_id;
- $poll = $pollsBySlug[ $pollSlug ];
+ $pollSlug = $d->poll_id;
+ $poll = $pollsBySlug[ $pollSlug ];
$newComment = new Comment();
- $poll->addComment($newComment);
+ $poll->addComment( $newComment );
- $newComment->setPoll($poll)
- ->setCreatedAt( date_create($d->date))
- ->setText( $d->comment)
+ $newComment->setPoll( $poll )
+ ->setCreatedAt( date_create( $d->date ) )
+ ->setText( $d->comment )
// TODO update entities
- ->setPseudo( $d->name);
+ ->setPseudo( $d->name );
$em->persist( $newComment );
$comments[] = $newComment;
@@ -194,41 +190,45 @@ class MigrationController extends EmailsController {
// failure notice
$debug .= "
ça c'est fait. ";
- return $this->render('pages/migration.html.twig' , [
- "message" => "welcome to the framadate migration endpoint, it has yet to be done",
- "debug" => $debug,
- "OLD_DATABASE_NAME" => $this->getParameter( 'OLD_DATABASE_NAME' ),
- "OLD_DATABASE_USER" => $this->getParameter( 'OLD_DATABASE_USER' ),
- "counters" =>[
- 'polls' => count($pollsBySlug),
- 'comments' => count($comments),
- 'choices' => count($choicesCreated),
- 'stacks_of_votes' => count($stacksOfVote),
- 'votes' => count($votes),
- ]
- ]);
+ return $this->render( 'pages/migration.html.twig',
+ [
+ "message" => "welcome to the framadate migration endpoint, it has yet to be done",
+ "debug" => $debug,
+ "OLD_DATABASE_NAME" => $this->getParameter( 'OLD_DATABASE_NAME' ),
+ "OLD_DATABASE_USER" => $this->getParameter( 'OLD_DATABASE_USER' ),
+ "counters" => [
+ 'polls' => count( $pollsBySlug ),
+ 'comments' => count( $comments ),
+ 'choices' => count( $choicesCreated ),
+ 'stacks_of_votes' => count( $stacksOfVote ),
+ 'votes' => count( $votes ),
+ ],
+ ] );
}
+
/**
* @param $numberToConvert
* conversion of answer:
* space character : no answer, 0 : no , 1 : maybe , 2 : yes
+ *
* @return string
*/
- public function mapAnswerNumberToWord($numberToConvert){
+ public function mapAnswerNumberToWord( $numberToConvert ) {
$word = '';
- switch ($numberToConvert){
+ switch ( $numberToConvert ) {
case 0:
$word = 'no';
break;
- case 1:
+ case 1:
$word = 'maybe';
break;
- case 2:
+ case 2:
$word = 'yes';
break;
default:
$word = 'no';
}
+
return $word;
}
diff --git a/src/Controller/PollController.php b/src/Controller/PollController.php
index 2d38a8f..1358e0e 100644
--- a/src/Controller/PollController.php
+++ b/src/Controller/PollController.php
@@ -9,104 +9,103 @@ use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
/**
* @Route("/poll")
*/
-class PollController extends AbstractController
-{
- /**
- * @Route("/", name="poll_index", methods={"GET"})
- */
- public function index(PollRepository $pollRepository): Response
- {
+class PollController extends AbstractController {
+ /**
+ * @Route("/", name="poll_index", methods={"GET"})
+ */
+ public function index( PollRepository $pollRepository ): Response {
- $polls = $pollRepository->findAll();
- $titles=[];
- foreach ( $polls as $poll ) {
- $titles[] = $poll->getTitle();
- }
- return $this->render('poll/index.html.twig', [
- 'count' => count($polls),
- 'titles' => $titles,
- 'polls' => $polls,
- ]);
- }
+ $polls = $pollRepository->findAll();
+ $titles = [];
+ foreach ( $polls as $poll ) {
+ $titles[] = $poll->getTitle();
+ }
- /**
- * @Route("/new", name="poll_new", methods={"GET","POST"})
- */
- public function new(Request $request): Response
- {
- $poll = new Poll();
- $form = $this->createForm(PollType::class, $poll);
- $form->handleRequest($request);
+ return $this->render( 'poll/index.html.twig',
+ [
+ 'count' => count( $polls ),
+ 'titles' => $titles,
+ 'polls' => $polls,
+ ] );
+ }
- if ($form->isSubmitted() && $form->isValid()) {
- $entityManager = $this->getDoctrine()->getManager();
- $entityManager->persist($poll);
- $entityManager->flush();
+ /**
+ * @Route("/new", name="poll_new", methods={"GET","POST"})
+ */
+ public function new( Request $request ): Response {
+ $poll = new Poll();
+ $form = $this->createForm( PollType::class, $poll );
+ $form->handleRequest( $request );
- return $this->redirectToRoute('poll_index');
- }
+ if ( $form->isSubmitted() && $form->isValid() ) {
+ $entityManager = $this->getDoctrine()->getManager();
+ $entityManager->persist( $poll );
+ $entityManager->flush();
- return $this->render('poll/new.html.twig', [
- 'poll' => $poll,
- 'form' => $form->createView(),
- ]);
- }
+ return $this->redirectToRoute( 'poll_index' );
+ }
- /**
- * on cherche un sondage par son url personnalisée
- * @Route("/{id}", name="poll_show", methods={"GET"})
- */
- public function show($id): Response
- {
- $repository = $this->getDoctrine()->getRepository(Poll::class);
- $foundPoll = $repository->findOneByCustomUrl($id);
- if(!$foundPoll){
- return $this->json([
- 'message' => $id.' : not found'
- ], 404);
- }
+ return $this->render( 'poll/new.html.twig',
+ [
+ 'poll' => $poll,
+ 'form' => $form->createView(),
+ ] );
+ }
- return $this->render('poll/show.html.twig', [
- 'poll' => $foundPoll,
- ]);
- }
+ /**
+ * on cherche un sondage par son url personnalisée
+ * @Route("/{id}", name="poll_show", methods={"GET"})
+ */
+ public function show( $id ): Response {
+ $repository = $this->getDoctrine()->getRepository( Poll::class );
+ $foundPoll = $repository->findOneByCustomUrl( $id );
+ if ( ! $foundPoll ) {
+ return $this->json( [
+ 'message' => $id . ' : not found',
+ ],
+ 404 );
+ }
- /**
- * @Route("/{id}/edit", name="poll_edit", methods={"GET","POST"})
- */
- public function edit(Request $request, Poll $poll): Response
- {
- $form = $this->createForm(PollType::class, $poll);
- $form->handleRequest($request);
+ return $this->render( 'poll/show.html.twig',
+ [
+ 'poll' => $foundPoll,
+ ] );
+ }
- if ($form->isSubmitted() && $form->isValid()) {
- $this->getDoctrine()->getManager()->flush();
+ /**
+ * @Route("/{id}/edit", name="poll_edit", methods={"GET","POST"})
+ */
+ public function edit( Request $request, Poll $poll ): Response {
+ $form = $this->createForm( PollType::class, $poll );
+ $form->handleRequest( $request );
- return $this->redirectToRoute('poll_index');
- }
+ if ( $form->isSubmitted() && $form->isValid() ) {
+ $this->getDoctrine()->getManager()->flush();
- return $this->render('poll/edit.html.twig', [
- 'poll' => $poll,
- 'form' => $form->createView(),
- ]);
- }
+ return $this->redirectToRoute( 'poll_index' );
+ }
- /**
- * @Route("/{id}", name="poll_delete", methods={"DELETE"})
- */
- public function delete(Request $request, Poll $poll): Response
- {
- if ($this->isCsrfTokenValid('delete'.$poll->getId(), $request->request->get('_token'))) {
- $entityManager = $this->getDoctrine()->getManager();
- $entityManager->remove($poll);
- $entityManager->flush();
- }
+ return $this->render( 'poll/edit.html.twig',
+ [
+ 'poll' => $poll,
+ 'form' => $form->createView(),
+ ] );
+ }
- return $this->redirectToRoute('poll_index');
- }
+ /**
+ * @Route("/{id}", name="poll_delete", methods={"DELETE"})
+ */
+ public function delete( Request $request, Poll $poll ): Response {
+ if ( $this->isCsrfTokenValid( 'delete' . $poll->getId(), $request->request->get( '_token' ) ) ) {
+ $entityManager = $this->getDoctrine()->getManager();
+ $entityManager->remove( $poll );
+ $entityManager->flush();
+ }
+
+ return $this->redirectToRoute( 'poll_index' );
+ }
}
diff --git a/src/Controller/api/CommentController.php b/src/Controller/api/CommentController.php
index 2224094..0c762b7 100644
--- a/src/Controller/api/CommentController.php
+++ b/src/Controller/api/CommentController.php
@@ -36,13 +36,15 @@ class CommentController extends EmailsController {
SerializerInterface $serializer,
Poll $poll
) {
- $jsonResponse = $serializer->serialize([
+ $jsonResponse = $serializer->serialize( [
'message' => 'here are your comments of the poll',
- 'data' => $poll->getComments()], 'json');
+ 'data' => $poll->getComments(),
+ ],
+ 'json' );
- $response = new Response($jsonResponse);
- $response->headers->set('Content-Type', 'application/json');
- $response->setStatusCode(200);
+ $response = new Response( $jsonResponse );
+ $response->headers->set( 'Content-Type', 'application/json' );
+ $response->setStatusCode( 200 );
return $response;
@@ -72,8 +74,8 @@ class CommentController extends EmailsController {
$em = $this->getDoctrine()->getRepository( Owner::class );
$data = json_decode( $data, true );
- if(!isset($data['email'])) {
- return $this->json(["message" => "Incorrect JSON in request"], 400);
+ if ( ! isset( $data[ 'email' ] ) ) {
+ return $this->json( [ "message" => "Incorrect JSON in request" ], 400 );
}
$foundOwner = $em->findOneByEmail( $data[ 'email' ] );
@@ -81,8 +83,8 @@ class CommentController extends EmailsController {
if ( ! $foundOwner ) {
$foundOwner = new Owner();
$foundOwner->setPseudo( $data[ 'email' ] )
- ->setEmail( $data[ 'email' ] )
- ->setModifierToken( uniqid( '', true ) );
+ ->setEmail( $data[ 'email' ] )
+ ->setModifierToken( uniqid( '', true ) );
}
// anti flood
$seconds_limit_lastpost = 5;
@@ -118,8 +120,8 @@ class CommentController extends EmailsController {
}
}
$comment->setOwner( $foundOwner )
- ->setCreatedAt( new DateTime() )
- ->setPoll( $poll );
+ ->setCreatedAt( new DateTime() )
+ ->setPoll( $poll );
$foundOwner->addComment( $comment );
$em = $this->getDoctrine()->getManager();
@@ -127,8 +129,8 @@ class CommentController extends EmailsController {
$em->persist( $comment );
$em->flush();
- if($poll->getMailOnComment()){
- $this->sendCommentNotificationAction($foundOwner, $comment);
+ if ( $poll->getMailOnComment() ) {
+ $this->sendCommentNotificationAction( $foundOwner, $comment );
}
diff --git a/src/Controller/api/PollController.php b/src/Controller/api/PollController.php
index bd8d213..fcb54e8 100644
--- a/src/Controller/api/PollController.php
+++ b/src/Controller/api/PollController.php
@@ -7,6 +7,11 @@ use App\Entity\Choice;
use App\Entity\Owner;
use App\Entity\Poll;
use App\Repository\PollRepository;
+use FOS\RestBundle\Controller\Annotations\Delete;
+use FOS\RestBundle\Controller\Annotations\Get;
+use FOS\RestBundle\Controller\Annotations\Post;
+use FOS\RestBundle\Controller\Annotations\Put;
+use FOS\RestBundle\Controller\Annotations\Route;
use JMS\Serializer\Exception\RuntimeException;
use JMS\Serializer\SerializerBuilder;
use JMS\Serializer\SerializerInterface;
@@ -14,13 +19,6 @@ use Swift_Mailer;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
-
-use FOS\RestBundle\Controller\Annotations\Get;
-use FOS\RestBundle\Controller\Annotations\Put;
-use FOS\RestBundle\Controller\Annotations\Delete;
-use FOS\RestBundle\Controller\Annotations\Post;
-use FOS\RestBundle\Controller\Annotations\Route;
/**
* Class DefaultController
@@ -63,19 +61,6 @@ class PollController extends EmailsController {
}
- /**
- * @param $id
- * message when the poll is not found
- *
- * @return JsonResponse
- */
- public function notFoundPoll( $id ): Response {
- return $this->json( [
- 'message' => $id . ' : poll not found',
- ],
- 404 );
- }
-
/**
* get a poll config by its custom URL, we do not want polls to be reachable by their numeric id
* @Get(
@@ -104,7 +89,6 @@ class PollController extends EmailsController {
$stacks = $poll->getStacksOfVotes();
-
$pass = $poll->getPassword();
@@ -125,6 +109,19 @@ class PollController extends EmailsController {
}
+ /**
+ * @param $id
+ * message when the poll is not found
+ *
+ * @return JsonResponse
+ */
+ public function notFoundPoll( $id ): Response {
+ return $this->json( [
+ 'message' => $id . ' : poll not found',
+ ],
+ 404 );
+ }
+
/**
* get a poll config by its custom URL, we do not want polls to be reachable by their numeric id
* @Get(
@@ -196,8 +193,8 @@ class PollController extends EmailsController {
$em->persist( $poll );
$em->flush();
- return $this->json( $poll->displayForAdmin()
- ,
+ return $this->json( $poll->displayForAdmin()
+ ,
200 );
}
@@ -305,9 +302,9 @@ class PollController extends EmailsController {
$this->sendCreationMailAction( $foundOwner, $newpoll );
return $this->json( [
- 'message' => 'you created a poll ' . $precision,
- 'poll' => $newpoll->displayForAdmin,
- 'password_protected' => is_string( $newpoll->getPassword() ),
+ 'message' => 'you created a poll ' . $precision,
+ 'poll' => $newpoll->displayForAdmin,
+ 'password_protected' => is_string( $newpoll->getPassword() ),
],
201 );
diff --git a/src/Controller/api/VoteController.php b/src/Controller/api/VoteController.php
index ecb0c0b..58fe69a 100644
--- a/src/Controller/api/VoteController.php
+++ b/src/Controller/api/VoteController.php
@@ -31,6 +31,7 @@ class VoteController extends EmailsController {
* name = "new_vote_stack",
* requirements = {"content"="\w+", "poll_id"="\d+"}
* )
+ *
* @param SerializerInterface $serializer
* @param Poll $poll
* @param Request $request
@@ -96,8 +97,8 @@ class VoteController extends EmailsController {
404 );
}
$vote->setPoll( $poll )
- ->setChoice( $foundChoice )
- ->setValue( $voteInfo[ 'value' ] );
+ ->setChoice( $foundChoice )
+ ->setValue( $voteInfo[ 'value' ] );
$vote->setPoll( $poll );
$stack->addVote( $vote );
$poll->addVote( $vote );
@@ -116,17 +117,17 @@ class VoteController extends EmailsController {
}
$stacks = $poll->getStacksOfVotes();
- if($poll->getMailOnVote()){
- $this->sendVoteNotificationAction($stack->getOwner(), $stack);
+ if ( $poll->getMailOnVote() ) {
+ $this->sendVoteNotificationAction( $stack->getOwner(), $stack );
}
$returnedVoteStack = $stack;
- $jsonResponse = $serializer->serialize($returnedVoteStack, 'json');
+ $jsonResponse = $serializer->serialize( $returnedVoteStack, 'json' );
- $response = new Response($jsonResponse);
- $response->headers->set('Content-Type', 'application/json');
- $response->setStatusCode(200);
+ $response = new Response( $jsonResponse );
+ $response->headers->set( 'Content-Type', 'application/json' );
+ $response->setStatusCode( 200 );
return $response;
@@ -139,6 +140,7 @@ class VoteController extends EmailsController {
* name = "update_vote_stack",
* requirements = { "id"="\d+"}
* )
+ *
* @param SerializerInterface $serializer
* @param StackOfVotes $id
* @param $modifierToken
@@ -171,15 +173,16 @@ class VoteController extends EmailsController {
// save evrything
- $jsonResponse = $serializer->serialize([
+ $jsonResponse = $serializer->serialize( [
'message' => 'ok',
'modifier_token' => $voteStack->getOwner()->getModifierToken(),
'vote_stack' => $voteStack,
- ], 'json');
+ ],
+ 'json' );
- $response = new Response($jsonResponse);
- $response->headers->set('Content-Type', 'application/json');
- $response->setStatusCode(200);
+ $response = new Response( $jsonResponse );
+ $response->headers->set( 'Content-Type', 'application/json' );
+ $response->setStatusCode( 200 );
return $response;
@@ -207,11 +210,13 @@ class VoteController extends EmailsController {
return $this->json( [
'message' => 'boom! les ' . $length . ' votes du sondage ont été supprimés',
- ],200 );
+ ],
+ 200 );
} else {
return $this->json( [
- 'message' => 'le token d\'autorisation est invalide, vous ne pouvez pas modifier ce sondage'
- ],403 );
+ 'message' => 'le token d\'autorisation est invalide, vous ne pouvez pas modifier ce sondage',
+ ],
+ 403 );
}
}
}
diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php
index 8838f8f..58305fd 100755
--- a/src/DataFixtures/AppFixtures.php
+++ b/src/DataFixtures/AppFixtures.php
@@ -6,13 +6,11 @@ use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
-class AppFixtures extends Fixture
-{
- public function load(ObjectManager $manager)
- {
- // $product = new Product();
- // $manager->persist($product);
+class AppFixtures extends Fixture {
+ public function load( ObjectManager $manager ) {
+ // $product = new Product();
+ // $manager->persist($product);
- $manager->flush();
- }
+ $manager->flush();
+ }
}
diff --git a/src/DataFixtures/AppPollFixtures.php b/src/DataFixtures/AppPollFixtures.php
index a499990..d3f26df 100755
--- a/src/DataFixtures/AppPollFixtures.php
+++ b/src/DataFixtures/AppPollFixtures.php
@@ -42,12 +42,12 @@ class AppPollFixtures extends Fixture {
$pollCitronOrange = new Poll();
$pollCitronOrange->setTitle( 'citron ou orange' )
- ->setCustomUrl('citron')
- ->setDescription( 'votre sorbert préféré' )
- ->setModificationPolicy( 'nobody' )
- ->setPassword('le pass woute woute');
+ ->setCustomUrl( 'citron' )
+ ->setDescription( 'votre sorbert préféré' )
+ ->setModificationPolicy( 'nobody' )
+ ->setPassword( 'le pass woute woute' );
- $this->addReference(self::POLL_FIXTURE_ONE, $pollCitronOrange);
+ $this->addReference( self::POLL_FIXTURE_ONE, $pollCitronOrange );
$pollCitronOrange->setMailOnVote( true );
$pollCitronOrange->setOwner( $owner );
@@ -106,21 +106,21 @@ class AppPollFixtures extends Fixture {
$ownerComment = new Comment();
$ownerComment
->setText( "trop bien ce sondage wohooo! signé l'auteur." )
- ->setPseudo('un gens qui commente')
+ ->setPseudo( 'un gens qui commente' )
->setOwner( $owner );
$pollCitronOrange->addComment( $ownerComment );
$someoneComment = new Comment();
$someoneComment
->setText( "comme l'auteur se la raconte. PFFFF!" )
- ->setPseudo('un gens qui commente')
+ ->setPseudo( 'un gens qui commente' )
->setOwner( $commenterMan );
$pollCitronOrange->addComment( $someoneComment );
$pollCitronOrange->setTitle( 'démo sondage de texte avec deux commentaires' )
- ->setCustomUrl('demo')
- ->setDescription( 'description du sondage 2' );
+ ->setCustomUrl( 'demo' )
+ ->setDescription( 'description du sondage 2' );
$pollCitronOrange->setModificationPolicy( 'self' );
$pollCitronOrange->setMailOnComment( true );
@@ -138,9 +138,9 @@ class AppPollFixtures extends Fixture {
// voting test with 2 people
// poll with date type
- $pollCitronOrange = new Poll();
- $choice = new Choice();
- $firstDate = new DateTime();
+ $pollCitronOrange = new Poll();
+ $choice = new Choice();
+ $firstDate = new DateTime();
$choice->setName( $firstDate->format( 'Y-m-d H:i:s' ) );
$choice2 = new Choice();
$choice3 = new Choice();
@@ -148,42 +148,42 @@ class AppPollFixtures extends Fixture {
$choice3->setName( $pollCitronOrange->addDaysToDate( $firstDate, 2 )->format( 'Y-m-d H:i:s' ) );
$pollCitronOrange->setTitle( "c'est pour aujourdhui ou pour demain" )
- ->setCustomUrl('aujourdhui-ou-demain')
- ->setDescription( 'Vous avez le choix dans la date' )
- ->setKind( 'date' )
- ->setOwner( $owner )
- ->addChoice( $choice )
- ->addChoice( $choice2 )
- ->addChoice( $choice3 )
- ->setModificationPolicy( 'everybody' );
+ ->setCustomUrl( 'aujourdhui-ou-demain' )
+ ->setDescription( 'Vous avez le choix dans la date' )
+ ->setKind( 'date' )
+ ->setOwner( $owner )
+ ->addChoice( $choice )
+ ->addChoice( $choice2 )
+ ->addChoice( $choice3 )
+ ->setModificationPolicy( 'everybody' );
$manager->persist( $pollCitronOrange );
// poll with cartoon choices
$pollCartoons = new Poll();
$pollCartoons->setTitle( 'dessin animé préféré' )
- ->setCustomUrl('dessin-anime')
- ->setDescription( 'choisissez votre animé préféré' )
- ->setOwner( $owner )
- ->setModificationPolicy( 'nobody' )
- ->addTextChoiceArray( [
- "Vic le viking",
- "Boumbo petite automobile",
- "Les mystérieuses cités d'or",
- "Les mondes engloutis",
- "Foot 2 rue",
- "Le chat, la vache, et l'océan",
- "Digimon",
- ] );
+ ->setCustomUrl( 'dessin-anime' )
+ ->setDescription( 'choisissez votre animé préféré' )
+ ->setOwner( $owner )
+ ->setModificationPolicy( 'nobody' )
+ ->addTextChoiceArray( [
+ "Vic le viking",
+ "Boumbo petite automobile",
+ "Les mystérieuses cités d'or",
+ "Les mondes engloutis",
+ "Foot 2 rue",
+ "Le chat, la vache, et l'océan",
+ "Digimon",
+ ] );
$someoneComment = new Comment();
$someoneComment
- ->setPseudo('un gens qui commente')
+ ->setPseudo( 'un gens qui commente' )
->setText( "allez boumbo!" )
->setOwner( $commenterMan );
$pollCartoons->addComment( $someoneComment );
$someoneComment2 = new Comment();
$someoneComment2
- ->setPseudo('un gens qui commente')
+ ->setPseudo( 'un gens qui commente' )
->setText( "je suis pour la team rocket de digimon" )
->setOwner( $owner );
$pollCartoons->addComment( $someoneComment2 );
@@ -195,7 +195,7 @@ class AppPollFixtures extends Fixture {
$stack
->setPoll( $pollCartoons )
->setOwner( $voter );
- $pollCartoons->addStackOfVote($stack);
+ $pollCartoons->addStackOfVote( $stack );
$vote = new Vote();
$vote
@@ -203,7 +203,7 @@ class AppPollFixtures extends Fixture {
->setStacksOfVotes( $stack )
->setValue( "yes" )
->setChoice( $pollCartoons->getChoices()[ 2 ] );
- $pollCartoons->addVote($vote);
+ $pollCartoons->addVote( $vote );
$vote = new Vote();
$vote
@@ -211,7 +211,7 @@ class AppPollFixtures extends Fixture {
->setStacksOfVotes( $stack )
->setValue( "maybe" )
->setChoice( $pollCartoons->getChoices()[ 1 ] );
- $pollCartoons->addVote($vote);
+ $pollCartoons->addVote( $vote );
$manager->persist( $stack );
@@ -227,7 +227,7 @@ class AppPollFixtures extends Fixture {
->setStacksOfVotes( $stack )
->setValue( "yes" )
->setChoice( $pollCartoons->getChoices()[ 1 ] );
- $pollCartoons->addVote($vote);
+ $pollCartoons->addVote( $vote );
$vote = new Vote();
$vote
@@ -235,7 +235,7 @@ class AppPollFixtures extends Fixture {
->setStacksOfVotes( $stack )
->setValue( "yes" )
->setChoice( $pollCartoons->getChoices()[ 2 ] );
- $pollCartoons->addVote($vote);
+ $pollCartoons->addVote( $vote );
$vote = new Vote();
$vote
@@ -243,7 +243,7 @@ class AppPollFixtures extends Fixture {
->setStacksOfVotes( $stack )
->setValue( "no" )
->setChoice( $pollCartoons->getChoices()[ 2 ] );
- $pollCartoons->addVote($vote);
+ $pollCartoons->addVote( $vote );
$manager->persist( $pollCartoons );
$manager->persist( $stack );
diff --git a/src/DataFixtures/VotesStacksFixtures.php b/src/DataFixtures/VotesStacksFixtures.php
index cd9960c..8eb0260 100644
--- a/src/DataFixtures/VotesStacksFixtures.php
+++ b/src/DataFixtures/VotesStacksFixtures.php
@@ -3,16 +3,14 @@
namespace App\DataFixtures;
use App\Entity\Owner;
-use App\Entity\Poll;
use App\Entity\StackOfVotes;
use App\Entity\Vote;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\DataFixtures\DependentFixtureInterface;
use Doctrine\Persistence\ObjectManager;
-class VotesStacksFixtures extends Fixture implements DependentFixtureInterface {
- public function getDependencies()
- {
+class VotesStacksFixtures extends Fixture implements DependentFixtureInterface {
+ public function getDependencies() {
return [
AppPollFixtures::class,
];
@@ -32,8 +30,8 @@ class VotesStacksFixtures extends Fixture implements DependentFixtureInterface
// "citron ou orange"
// add vote stacks on "citron ou orange"
- $pollCitronOrange = $this->getReference(AppPollFixtures::POLL_FIXTURE_ONE);
- $stack1 = new StackOfVotes();
+ $pollCitronOrange = $this->getReference( AppPollFixtures::POLL_FIXTURE_ONE );
+ $stack1 = new StackOfVotes();
$stack1
->setPoll( $pollCitronOrange )
->setOwner( $people1 );
diff --git a/src/Entity/Choice.php b/src/Entity/Choice.php
index cdff507..048b4b3 100755
--- a/src/Entity/Choice.php
+++ b/src/Entity/Choice.php
@@ -1,145 +1,145 @@
poll = new ArrayCollection();
- $this->votes = new ArrayCollection();
- $this->setDateTime( new DateTime() );
- if ( $optionalName ) {
- $this->setName( $optionalName );
- }
- }
-
-
- public function display() {
- return [
- 'id' => $this->getId(),
- 'date' => $this->getDateTime(),
- 'name' => $this->getName(),
- 'url' => $this->getUrl(),
- ];
- }
-
- public function getId(): ?int {
- return $this->id;
- }
-
- public function getDateTime(): ?DateTimeInterface {
- return $this->dateTime;
- }
-
- public function setDateTime( ?DateTimeInterface $dateTime ): self {
- $this->dateTime = $dateTime;
-
- return $this;
- }
-
- public function getName(): ?string {
- return $this->name;
- }
-
- public function setName( ?string $name ): self {
- $this->name = $name;
-
- return $this;
- }
-
- public function getPoll(): ?Poll {
- return $this->poll;
- }
-
- public function setPoll( ?Poll $poll ): self {
- $this->poll = $poll;
-
- return $this;
- }
-
- /**
- * @return Collection|Vote[]
- */
- public function getVotes(): Collection {
- return $this->votes;
- }
-
- public function addVote( Vote $vote ): self {
- if ( ! $this->votes->contains( $vote ) ) {
- $this->votes[] = $vote;
- $vote->setChoice( $this );
- }
-
- return $this;
- }
-
- public function removeVote( Vote $vote ): self {
- if ( $this->votes->contains( $vote ) ) {
- $this->votes->removeElement( $vote );
- // set the owning side to null (unless already changed)
- if ( $vote->getChoice() === $this ) {
- $vote->setChoice( null );
- }
- }
-
- return $this;
- }
-
- public function getUrl(): ?string {
- return $this->url;
- }
-
- public function setUrl( ?string $url ): self {
- $this->url = $url;
-
- return $this;
+ public function __construct( $optionalName = null ) {
+ $this->poll = new ArrayCollection();
+ $this->votes = new ArrayCollection();
+ $this->setDateTime( new DateTime() );
+ if ( $optionalName ) {
+ $this->setName( $optionalName );
}
}
+
+
+ public function display() {
+ return [
+ 'id' => $this->getId(),
+ 'date' => $this->getDateTime(),
+ 'name' => $this->getName(),
+ 'url' => $this->getUrl(),
+ ];
+ }
+
+ public function getId(): ?int {
+ return $this->id;
+ }
+
+ public function getDateTime(): ?DateTimeInterface {
+ return $this->dateTime;
+ }
+
+ public function setDateTime( ?DateTimeInterface $dateTime ): self {
+ $this->dateTime = $dateTime;
+
+ return $this;
+ }
+
+ public function getName(): ?string {
+ return $this->name;
+ }
+
+ public function setName( ?string $name ): self {
+ $this->name = $name;
+
+ return $this;
+ }
+
+ public function getUrl(): ?string {
+ return $this->url;
+ }
+
+ public function setUrl( ?string $url ): self {
+ $this->url = $url;
+
+ return $this;
+ }
+
+ public function getPoll(): ?Poll {
+ return $this->poll;
+ }
+
+ public function setPoll( ?Poll $poll ): self {
+ $this->poll = $poll;
+
+ return $this;
+ }
+
+ /**
+ * @return Collection|Vote[]
+ */
+ public function getVotes(): Collection {
+ return $this->votes;
+ }
+
+ public function addVote( Vote $vote ): self {
+ if ( ! $this->votes->contains( $vote ) ) {
+ $this->votes[] = $vote;
+ $vote->setChoice( $this );
+ }
+
+ return $this;
+ }
+
+ public function removeVote( Vote $vote ): self {
+ if ( $this->votes->contains( $vote ) ) {
+ $this->votes->removeElement( $vote );
+ // set the owning side to null (unless already changed)
+ if ( $vote->getChoice() === $this ) {
+ $vote->setChoice( null );
+ }
+ }
+
+ return $this;
+ }
+}
diff --git a/src/Entity/Comment.php b/src/Entity/Comment.php
index 5423116..05ba2ee 100755
--- a/src/Entity/Comment.php
+++ b/src/Entity/Comment.php
@@ -2,6 +2,7 @@
namespace App\Entity;
+use DateTime;
use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
@@ -51,72 +52,70 @@ class Comment {
*/
private $poll;
- function display() {
- return [
- 'id' => $this->getId(),
- 'text' => $this->getText(),
- 'pseudo' => $this->getOwner()->getPseudo(),
- 'date' => $this->getCreatedAt(),
- ];
- }
-
function __construct() {
- $this->setCreatedAt( new \DateTime() );
- }
+ $this->setCreatedAt( new DateTime() );
+ }
+
+ function display() {
+ return [
+ 'id' => $this->getId(),
+ 'text' => $this->getText(),
+ 'pseudo' => $this->getOwner()->getPseudo(),
+ 'date' => $this->getCreatedAt(),
+ ];
+ }
public function getId(): ?int {
- return $this->id;
- }
-
- public function getOwner(): ?Owner {
- return $this->owner;
- }
-
- public function setOwner( ?Owner $owner ): self {
- $this->owner = $owner;
-
- return $this;
- }
+ return $this->id;
+ }
public function getText(): ?string {
- return $this->text;
- }
+ return $this->text;
+ }
public function setText( string $text ): self {
- $this->text = $text;
-
- return $this;
- }
+ $this->text = $text;
+
+ return $this;
+ }
+
+ public function getOwner(): ?Owner {
+ return $this->owner;
+ }
+
+ public function setOwner( ?Owner $owner ): self {
+ $this->owner = $owner;
+
+ return $this;
+ }
public function getCreatedAt(): ?DateTimeInterface {
- return $this->createdAt;
- }
+ return $this->createdAt;
+ }
public function setCreatedAt( DateTimeInterface $createdAt ): self {
- $this->createdAt = $createdAt;
-
- return $this;
- }
+ $this->createdAt = $createdAt;
+
+ return $this;
+ }
public function getPoll(): ?Poll {
- return $this->poll;
- }
+ return $this->poll;
+ }
public function setPoll( ?Poll $poll ): self {
- $this->poll = $poll;
-
- return $this;
- }
+ $this->poll = $poll;
- public function getPseudo(): ?string
- {
- return $this->pseudo;
- }
+ return $this;
+ }
- public function setPseudo(string $pseudo): self
- {
- $this->pseudo = $pseudo;
+ public function getPseudo(): ?string {
+ return $this->pseudo;
+ }
- return $this;
- }
+ public function setPseudo( string $pseudo ): self {
+ $this->pseudo = $pseudo;
+
+ return $this;
+ }
}
diff --git a/src/Entity/Owner.php b/src/Entity/Owner.php
index 761427a..66d37f0 100755
--- a/src/Entity/Owner.php
+++ b/src/Entity/Owner.php
@@ -2,6 +2,8 @@
namespace App\Entity;
+use DateTime;
+use DateTimeInterface;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
@@ -17,18 +19,18 @@ class Owner {
* @Serializer\Expose()
*/
public $pseudo;
- /**
- * @ORM\Id()
- * @ORM\GeneratedValue()
- * @ORM\Column(type="integer")
- */
- private $id;
/**
* @ORM\Column(type="string", length=255)
* @Serializer\Type("string")
* @Serializer\Expose()
*/
public $email;
+ /**
+ * @ORM\Id()
+ * @ORM\GeneratedValue()
+ * @ORM\Column(type="integer")
+ */
+ private $id;
/**
* @ORM\OneToMany(targetEntity="App\Entity\Poll", mappedBy="owner",cascade={"persist","remove"},orphanRemoval=true)
* @Serializer\Type("App\Entity\Poll")
@@ -62,7 +64,7 @@ class Owner {
$this->polls = new ArrayCollection();
$this->comments = new ArrayCollection();
$this->stackOfVotes = new ArrayCollection();
- $this->setCreatedAt( new \DateTime() );
+ $this->setCreatedAt( new DateTime() );
$this->setModifierToken( uniqid() );
}
@@ -206,11 +208,11 @@ class Owner {
return $this;
}
- public function getCreatedAt(): ?\DateTimeInterface {
+ public function getCreatedAt(): ?DateTimeInterface {
return $this->createdAt;
}
- public function setCreatedAt( \DateTimeInterface $createdAt ): self {
+ public function setCreatedAt( DateTimeInterface $createdAt ): self {
$this->createdAt = $createdAt;
return $this;
diff --git a/src/Entity/Poll.php b/src/Entity/Poll.php
index b57b4ba..1daf0a7 100755
--- a/src/Entity/Poll.php
+++ b/src/Entity/Poll.php
@@ -2,11 +2,14 @@
namespace App\Entity;
- use DateTimeInterface;
- use Doctrine\Common\Collections\ArrayCollection;
- use Doctrine\Common\Collections\Collection;
- use Doctrine\ORM\Mapping as ORM;
- use JMS\Serializer\Annotation as Serializer;
+use DateTime;
+use DateTimeInterface;
+use Doctrine\Common\Collections\ArrayCollection;
+use Doctrine\Common\Collections\Collection;
+use Doctrine\ORM\Mapping as ORM;
+use ErrorException;
+use JMS\Serializer\Annotation as Serializer;
+use RangeException;
/**
* @ORM\Entity(repositoryClass="App\Repository\PollRepository")
@@ -97,7 +100,7 @@ class Poll {
* @Serializer\Type("smallint")
* @Serializer\Expose()
*/
- public $choicesMax = -1;
+ public $choicesMax = - 1;
/**
* people can add comments
@@ -168,6 +171,12 @@ class Poll {
* @Serializer\Type("ArrayCollection")
*/
public $comments;
+ /**
+ * number of days from now for default expiracy date
+ * @var int
+ * @Serializer\Expose()
+ */
+ public $defaultExpiracyDaysFromNow = 60;
/**
* vote restricted by a password in md5 format
* @ORM\Column(type="string", length=255, nullable=true)
@@ -179,142 +188,27 @@ class Poll {
* @Serializer\Type("string")
*/
private $adminKey;
-
- /**
- * number of days from now for default expiracy date
- * @var int
- * @Serializer\Expose()
- */
- public $defaultExpiracyDaysFromNow = 60;
private $maxChoicesLimit = 25;
- public function computeAnswers() {
- // counts each number of answer for this choice
- $computedArray = [];
- $maxScore = 0;
-
- foreach ( $this->getStacksOfVotes() as $stack_of_vote ) {
- foreach ( $stack_of_vote->getVotes() as $vote ) {
- $answer = $vote->getValue();
- $choice_id = $vote->getChoice()->getId();
- $choice_url = $vote->getChoice()->getUrl();
-
- if ( ! isset( $computedArray[ $choice_id ] ) ) {
- $computedArray[ $choice_id ] = [
- 'id' => $choice_id,
- 'url' => $choice_url,
- 'name' => $vote->getChoice()->getName(),
- 'score' => 0,
- 'yes' => [
- 'count' => 0,
- 'people' => [],
- ],
- 'maybe' => [
- 'count' => 0,
- 'people' => [],
- ],
- 'no' => [
- 'count' => 0,
- 'people' => [],
- ],
- ];
- }
- $computedArray[ $choice_id ][ $answer ][ 'count' ] ++;
- $computedArray[ $choice_id ][ $answer ][ 'people' ][] = $stack_of_vote->getOwner()->getPseudo();
-
- if ( $answer == 'yes' ) {
- $computedArray[ $choice_id ][ 'score' ] += 1;
- } elseif ( $answer == 'maybe' ) {
- $computedArray[ $choice_id ][ 'score' ] += 0.5;
- }
- // compare with max value
- if ( $computedArray[ $choice_id ][ 'score' ] > $maxScore ) {
- $maxScore = $computedArray[ $choice_id ][ 'score' ];
- }
- }
- }
- $answersWithStats = [];
- foreach ( $computedArray as $choice_stat ) {
- $answersWithStats[] = $choice_stat;
- }
- return [
- 'answers' => $computedArray,
- 'answersWithStats' => $answersWithStats,
- 'max_score' => $maxScore,
- ];
- }
-
- public function displayForAdmin() {
- $content = $this->display();
- $content['owner_modifier_token'] = $this->getOwner()->getModifierToken();
- $content['admin_key'] = $this->getAdminKey();
- $content['password_hash'] = $this->getPassword();
- $content['id'] = $this->getId();
- return $content;
- }
- public function display() {
-
- $computedAnswers = $this->computeAnswers();
- $displayedStackOfVotes = [];
- foreach ( $this->getStacksOfVotes() as $stack ) {
- $displayedStackOfVotes[] = $stack->display();
- }
- $displayedChoices = [];
- foreach ( $this->getChoices() as $choice ) {
- $displayedChoices[] = $choice->display();
- }
- $displayedComments = [];
- foreach ( $this->getComments() as $comment ) {
- $displayedComments[] = $comment->display();
- }
-
-
-
- return [
- 'title' => $this->getTitle(),
- 'creation_date' => $this->getCreationDate()->format('c'),
- 'expiracy_date' => $this->getExpiracyDate()->format('c'),
- 'votes_max' => $this->getVotesMax(),
- 'choices_max' => $this->getChoicesMax(),
- 'kind' => $this->getKind(),
- 'allowed_answers' => $this->getAllowedAnswers(),
- 'votes_allowed' => $this->getVotesAllowed(),
- 'modification_policy' => $this->getModificationPolicy(),
- 'hide_results' => $this->getHideResults(),
- 'show_results_even_if_password' => $this->getShowResultEvenIfPasswords(),
- 'owner' => [
- 'pseudo' => $this->getOwner()->getPseudo()]
- ,
- 'password_protected' => $this->getPassword() ? 'yes' : 'no',
- 'max_score' => $computedAnswers['max_score'],
- 'choices' => $displayedChoices,
- 'choices_stats' => $computedAnswers['answersWithStats'],
- 'stacks' => $displayedStackOfVotes,
- 'comments' => $displayedComments,
- ];
- }
-
public function __construct() {
$this->initiate();
}
-
private function initiate() {
$this->votes = new ArrayCollection();
$this->stacksOfVotes = new ArrayCollection();
$this->choices = new ArrayCollection();
$this->comments = new ArrayCollection();
$this->setAdminKey( $this->generateAdminKey() );
- $this->setCreationDate( new \DateTime() );
+ $this->setCreationDate( new DateTime() );
$this->setExpiracyDate( $this->addDaysToDate(
- new \DateTime(),
+ new DateTime(),
$this->defaultExpiracyDaysFromNow
) );
$this->setAllowedAnswers( [ 'yes', 'maybe', 'no' ] );
}
-
public function generateAdminKey() {
$rand = random_int( PHP_INT_MIN, PHP_INT_MAX );
@@ -342,7 +236,7 @@ class Poll {
string $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
): string {
if ( $length < 1 ) {
- throw new \RangeException( "Length must be a positive integer" );
+ throw new RangeException( "Length must be a positive integer" );
}
$pieces = [];
$max = mb_strlen( $keyspace, '8bit' ) - 1;
@@ -353,33 +247,143 @@ class Poll {
return implode( '', $pieces );
}
- public function findChoiceById( int $id ) {
-
- $choices = $this->getChoices();
- $counter = 0;
- // there must be something cleaner than this in Doctrine ArrayCollection
- foreach ( $choices as $choice ) {
- $counter ++;
- if ( $counter > $this->maxChoicesLimit ) {
- throw new \ErrorException( "max number of choices reached for this poll" );
- }
- if ( $choice && $choice->getId() == $id ) {
- return $choice;
- }
-
- }
-
- return null;
- }
-
- public function addDaysToDate( \DateTime $date, int $days ) {
+ public function addDaysToDate( DateTime $date, int $days ) {
$st = strtotime( $date->getTimestamp() );
- return new \DateTime( $st );
+ return new DateTime( $st );
}
- public function getId(): ?int {
- return $this->id;
+ public function displayForAdmin() {
+ $content = $this->display();
+ $content[ 'owner_modifier_token' ] = $this->getOwner()->getModifierToken();
+ $content[ 'admin_key' ] = $this->getAdminKey();
+ $content[ 'password_hash' ] = $this->getPassword();
+ $content[ 'id' ] = $this->getId();
+
+ return $content;
+ }
+
+ public function display() {
+
+ $computedAnswers = $this->computeAnswers();
+ $displayedStackOfVotes = [];
+ foreach ( $this->getStacksOfVotes() as $stack ) {
+ $displayedStackOfVotes[] = $stack->display();
+ }
+ $displayedChoices = [];
+ foreach ( $this->getChoices() as $choice ) {
+ $displayedChoices[] = $choice->display();
+ }
+ $displayedComments = [];
+ foreach ( $this->getComments() as $comment ) {
+ $displayedComments[] = $comment->display();
+ }
+
+
+ return [
+ 'title' => $this->getTitle(),
+ 'creation_date' => $this->getCreationDate()->format( 'c' ),
+ 'expiracy_date' => $this->getExpiracyDate()->format( 'c' ),
+ 'votes_max' => $this->getVotesMax(),
+ 'choices_max' => $this->getChoicesMax(),
+ 'kind' => $this->getKind(),
+ 'allowed_answers' => $this->getAllowedAnswers(),
+ 'votes_allowed' => $this->getVotesAllowed(),
+ 'modification_policy' => $this->getModificationPolicy(),
+ 'hide_results' => $this->getHideResults(),
+ 'show_results_even_if_password' => $this->getShowResultEvenIfPasswords(),
+ 'owner' => [
+ 'pseudo' => $this->getOwner()->getPseudo(),
+ ]
+ ,
+ 'password_protected' => $this->getPassword() ? 'yes' : 'no',
+ 'max_score' => $computedAnswers[ 'max_score' ],
+ 'choices' => $displayedChoices,
+ 'choices_stats' => $computedAnswers[ 'answersWithStats' ],
+ 'stacks' => $displayedStackOfVotes,
+ 'comments' => $displayedComments,
+ ];
+ }
+
+ public function computeAnswers() {
+ // counts each number of answer for this choice
+ $computedArray = [];
+ $maxScore = 0;
+
+ foreach ( $this->getStacksOfVotes() as $stack_of_vote ) {
+ foreach ( $stack_of_vote->getVotes() as $vote ) {
+ $answer = $vote->getValue();
+ $choice_id = $vote->getChoice()->getId();
+ $choice_url = $vote->getChoice()->getUrl();
+
+ if ( ! isset( $computedArray[ $choice_id ] ) ) {
+ $computedArray[ $choice_id ] = [
+ 'id' => $choice_id,
+ 'url' => $choice_url,
+ 'name' => $vote->getChoice()->getName(),
+ 'score' => 0,
+ 'yes' => [
+ 'count' => 0,
+ 'people' => [],
+ ],
+ 'maybe' => [
+ 'count' => 0,
+ 'people' => [],
+ ],
+ 'no' => [
+ 'count' => 0,
+ 'people' => [],
+ ],
+ ];
+ }
+ $computedArray[ $choice_id ][ $answer ][ 'count' ] ++;
+ $computedArray[ $choice_id ][ $answer ][ 'people' ][] = $stack_of_vote->getOwner()->getPseudo();
+
+ if ( $answer == 'yes' ) {
+ $computedArray[ $choice_id ][ 'score' ] += 1;
+ } elseif ( $answer == 'maybe' ) {
+ $computedArray[ $choice_id ][ 'score' ] += 0.5;
+ }
+ // compare with max value
+ if ( $computedArray[ $choice_id ][ 'score' ] > $maxScore ) {
+ $maxScore = $computedArray[ $choice_id ][ 'score' ];
+ }
+ }
+ }
+ $answersWithStats = [];
+ foreach ( $computedArray as $choice_stat ) {
+ $answersWithStats[] = $choice_stat;
+ }
+
+ return [
+ 'answers' => $computedArray,
+ 'answersWithStats' => $answersWithStats,
+ 'max_score' => $maxScore,
+ ];
+ }
+
+ public function getStacksOfVotes() {
+ return $this->stacksOfVotes;
+ }
+
+ public function setStacksOfVotes( ?StackOfVotes $stacksOfVotes ): self {
+ $this->stacksOfVotes = $stacksOfVotes;
+
+ return $this;
+ }
+
+ /**
+ * @return Collection|Choice[]
+ */
+ public function getChoices(): Collection {
+ return $this->choices;
+ }
+
+ /**
+ * @return Collection|Comment[]
+ */
+ public function getComments(): Collection {
+ return $this->comments;
}
public function getTitle(): ?string {
@@ -402,46 +406,32 @@ class Poll {
return $this;
}
+ public function getExpiracyDate(): ?DateTimeInterface {
+ return $this->expiracyDate;
+ }
+
public function setExpiracyDate( DateTimeInterface $expiracyDate ): self {
$this->expiracyDate = $expiracyDate;
return $this;
}
- public function getOwner(): ?Owner {
- return $this->owner;
+ public function getVotesMax() {
+ return $this->votesMax;
}
- public function setOwner( ?Owner $owner ): self {
- $this->owner = $owner;
+ public function setVotesMax( $votesMax ): self {
+ $this->votesMax = $votesMax;
return $this;
}
- /**
- * @return Collection|Vote[]
- */
- public function getVotes(): Collection {
- return $this->votes;
+ public function getChoicesMax() {
+ return $this->choicesMax;
}
-
- public function getAdminKey(): ?string {
- return $this->adminKey;
- }
-
- public function setAdminKey( string $adminKey ): self {
- $this->adminKey = $adminKey;
-
- return $this;
- }
-
- public function getDescription(): ?string {
- return $this->description;
- }
-
- public function setDescription( string $description ): self {
- $this->description = $description;
+ public function setChoicesMax( $choicesMax ): self {
+ $this->choicesMax = $choicesMax;
return $this;
}
@@ -456,22 +446,22 @@ class Poll {
return $this;
}
- public function getCustomUrl(): ?string {
- return $this->customUrl;
+ public function getAllowedAnswers(): ?array {
+ return $this->allowedAnswers;
}
- public function setCustomUrl( string $customUrl ): self {
- $this->customUrl = $customUrl;
+ public function setAllowedAnswers( array $allowedAnswers ): self {
+ $this->allowedAnswers = $allowedAnswers;
return $this;
}
- public function getPassword(): ?string {
- return $this->password;
+ public function getVotesAllowed(): ?bool {
+ return $this->votesAllowed;
}
- public function setPassword( string $password ): self {
- $this->password = md5( $password );
+ public function setVotesAllowed( ?bool $votesAllowed ): self {
+ $this->votesAllowed = $votesAllowed;
return $this;
}
@@ -486,26 +476,6 @@ class Poll {
return $this;
}
- public function getMailOnComment(): ?bool {
- return $this->mailOnComment;
- }
-
- public function setMailOnComment( bool $mailOnComment ): self {
- $this->mailOnComment = $mailOnComment;
-
- return $this;
- }
-
- public function getMailOnVote(): ?bool {
- return $this->mailOnVote;
- }
-
- public function setMailOnVote( bool $mailOnVote ): self {
- $this->mailOnVote = $mailOnVote;
-
- return $this;
- }
-
public function getHideResults(): ?bool {
return $this->hideResults;
}
@@ -526,12 +496,104 @@ class Poll {
return $this;
}
+ public function getOwner(): ?Owner {
+ return $this->owner;
+ }
+
+ public function setOwner( ?Owner $owner ): self {
+ $this->owner = $owner;
+
+ return $this;
+ }
+
+ public function getPassword(): ?string {
+ return $this->password;
+ }
+
+ public function setPassword( string $password ): self {
+ $this->password = md5( $password );
+
+ return $this;
+ }
+
+ public function getAdminKey(): ?string {
+ return $this->adminKey;
+ }
+
+ public function setAdminKey( string $adminKey ): self {
+ $this->adminKey = $adminKey;
+
+ return $this;
+ }
+
+ public function getId(): ?int {
+ return $this->id;
+ }
+
+ public function findChoiceById( int $id ) {
+
+ $choices = $this->getChoices();
+ $counter = 0;
+ // there must be something cleaner than this in Doctrine ArrayCollection
+ foreach ( $choices as $choice ) {
+ $counter ++;
+ if ( $counter > $this->maxChoicesLimit ) {
+ throw new ErrorException( "max number of choices reached for this poll" );
+ }
+ if ( $choice && $choice->getId() == $id ) {
+ return $choice;
+ }
+
+ }
+
+ return null;
+ }
/**
- * @return Collection|Comment[]
+ * @return Collection|Vote[]
*/
- public function getComments(): Collection {
- return $this->comments;
+ public function getVotes(): Collection {
+ return $this->votes;
+ }
+
+ public function getDescription(): ?string {
+ return $this->description;
+ }
+
+ public function setDescription( string $description ): self {
+ $this->description = $description;
+
+ return $this;
+ }
+
+ public function getCustomUrl(): ?string {
+ return $this->customUrl;
+ }
+
+ public function setCustomUrl( string $customUrl ): self {
+ $this->customUrl = $customUrl;
+
+ return $this;
+ }
+
+ public function getMailOnComment(): ?bool {
+ return $this->mailOnComment;
+ }
+
+ public function setMailOnComment( bool $mailOnComment ): self {
+ $this->mailOnComment = $mailOnComment;
+
+ return $this;
+ }
+
+ public function getMailOnVote(): ?bool {
+ return $this->mailOnVote;
+ }
+
+ public function setMailOnVote( bool $mailOnVote ): self {
+ $this->mailOnVote = $mailOnVote;
+
+ return $this;
}
public function addComment( Comment $comment ): self {
@@ -555,17 +617,6 @@ class Poll {
return $this;
}
- public function getStacksOfVotes() {
- return $this->stacksOfVotes;
- }
-
- public function setStacksOfVotes( ?StackOfVotes $stacksOfVotes ): self {
- $this->stacksOfVotes = $stacksOfVotes;
-
- return $this;
- }
-
-
public function addStackOfVote( StackOfVotes $stackOfVote ): self {
if ( ! $this->stacksOfVotes->contains( $stackOfVote ) ) {
$this->stacksOfVotes[] = $stackOfVote;
@@ -587,10 +638,6 @@ class Poll {
return $this;
}
- public function getExpiracyDate(): ?\DateTimeInterface {
- return $this->expiracyDate;
- }
-
public function addVote( Vote $vote ): self {
if ( ! $this->votes->contains( $vote ) ) {
$this->votes[] = $vote;
@@ -612,13 +659,6 @@ class Poll {
return $this;
}
- /**
- * @return Collection|Choice[]
- */
- public function getChoices(): Collection {
- return $this->choices;
- }
-
public function addTextChoiceArray( array $choiceTextArray ): self {
foreach ( $choiceTextArray as $text ) {
$newChoice = new Choice();
@@ -629,13 +669,17 @@ class Poll {
return $this;
}
+ public function addChoice( Choice $choice ): self {
+ if ( ! is_null( $this->choices ) ) {
+ if ( ! $this->choices->contains( $choice ) ) {
+ $this->choices[] = $choice;
+ $choice->setPoll( $this );
+ }
+ } else {
+ $this->choices[] = $choice;
+ $choice->setPoll( $this );
+ }
- public function getAllowedAnswers(): ?array {
- return $this->allowedAnswers;
- }
-
- public function setAllowedAnswers( array $allowedAnswers ): self {
- $this->allowedAnswers = $allowedAnswers;
return $this;
}
@@ -661,21 +705,6 @@ class Poll {
return $this;
}
- public function addChoice( Choice $choice ): self {
- if ( ! is_null( $this->choices ) ) {
- if ( ! $this->choices->contains( $choice ) ) {
- $this->choices[] = $choice;
- $choice->setPoll( $this );
- }
- } else {
- $this->choices[] = $choice;
- $choice->setPoll( $this );
- }
-
-
- return $this;
- }
-
public function removeChoice( Choice $choice ): self {
if ( $this->choices->contains( $choice ) ) {
$this->choices->removeElement( $choice );
@@ -688,36 +717,6 @@ class Poll {
return $this;
}
- public function getVotesAllowed(): ?bool {
- return $this->votesAllowed;
- }
-
- public function setVotesAllowed( ?bool $votesAllowed ): self {
- $this->votesAllowed = $votesAllowed;
-
- return $this;
- }
-
- public function getVotesMax() {
- return $this->votesMax;
- }
-
- public function setVotesMax( $votesMax ): self {
- $this->votesMax = $votesMax;
-
- return $this;
- }
-
- public function getChoicesMax() {
- return $this->choicesMax;
- }
-
- public function setChoicesMax( $choicesMax ): self {
- $this->choicesMax = $choicesMax;
-
- return $this;
- }
-
public function getCommentsAllowed(): ?bool {
return $this->commentsAllowed;
}
diff --git a/src/Entity/StackOfVotes.php b/src/Entity/StackOfVotes.php
index 39b321f..cb5330b 100755
--- a/src/Entity/StackOfVotes.php
+++ b/src/Entity/StackOfVotes.php
@@ -18,12 +18,6 @@ class StackOfVotes {
use TimeStampableTrait;
- /**
- * @ORM\Id()
- * @ORM\GeneratedValue()
- * @ORM\Column(type="integer")
- */
- private $id;
/**
* @ORM\Column(type="string", length=255)
* @Serializer\Type("string")
@@ -35,6 +29,12 @@ class StackOfVotes {
* @Serializer\Expose()
*/
public $votes;
+ /**
+ * @ORM\Id()
+ * @ORM\GeneratedValue()
+ * @ORM\Column(type="integer")
+ */
+ private $id;
/**
* @ORM\ManyToOne(targetEntity="App\Entity\Poll", inversedBy="stacksOfVotes", cascade={"persist"})
*/
@@ -46,6 +46,9 @@ class StackOfVotes {
*/
private $owner;
+ public function __construct() {
+ $this->votes = new ArrayCollection();
+ }
public function display() {
$votes = $this->getVotes();
@@ -53,9 +56,9 @@ class StackOfVotes {
$tab = [
// 'id' => $this->getId(),
// 'modifier_token' => $this->getOwner()->getModifierToken(),
- 'pseudo' => $this->getPseudo(),
- 'created_at' => $this->getCreatedAtAsString(),
- 'votes' => [],
+ 'pseudo' => $this->getPseudo(),
+ 'created_at' => $this->getCreatedAtAsString(),
+ 'votes' => [],
];
// prefill votes with all choices ids
// foreach ( $this->getPoll()->getChoices() as $choice ) {
@@ -66,27 +69,12 @@ class StackOfVotes {
// }
foreach ( $votes as $vote ) {
- $tab[ 'votes' ][$vote->getChoice()->getId()] = $vote->display();
+ $tab[ 'votes' ][ $vote->getChoice()->getId() ] = $vote->display();
}
return $tab;
}
- /**
- * @ORM\PrePersist
- */
- public function prePersist() {
- $this->setPseudo( $this->getOwner()->getPseudo() );
- }
-
- public function __construct() {
- $this->votes = new ArrayCollection();
- }
-
- public function getId(): ?int {
- return $this->id;
- }
-
/**
* @return Collection|poll[]
*/
@@ -94,6 +82,37 @@ class StackOfVotes {
return $this->votes;
}
+ public function getPseudo(): ?string {
+ return $this->pseudo;
+ }
+
+ public function setPseudo( ?string $pseudo ): self {
+ $this->pseudo = $pseudo;
+
+ return $this;
+ }
+
+ /**
+ * @ORM\PrePersist
+ */
+ public function prePersist() {
+ $this->setPseudo( $this->getOwner()->getPseudo() );
+ }
+
+ public function getOwner(): ?Owner {
+ return $this->owner;
+ }
+
+ public function setOwner( ?Owner $owner ): self {
+ $this->owner = $owner;
+
+ return $this;
+ }
+
+ public function getId(): ?int {
+ return $this->id;
+ }
+
public function addVote( Vote $vote ): self {
if ( ! $this->votes->contains( $vote ) ) {
$vote->setPoll( $this->getPoll() );
@@ -105,6 +124,16 @@ class StackOfVotes {
return $this;
}
+ public function getPoll(): ?Poll {
+ return $this->poll;
+ }
+
+ public function setPoll( ?Poll $poll ): self {
+ $this->poll = $poll;
+
+ return $this;
+ }
+
public function removeVote( Vote $vote ): self {
if ( $this->votes->contains( $vote ) ) {
$this->votes->removeElement( $vote );
@@ -116,34 +145,4 @@ class StackOfVotes {
return $this;
}
-
- public function getPseudo(): ?string {
- return $this->pseudo;
- }
-
- public function setPseudo( ?string $pseudo ): self {
- $this->pseudo = $pseudo;
-
- return $this;
- }
-
- public function getOwner(): ?Owner {
- return $this->owner;
- }
-
- public function setOwner( ?Owner $owner ): self {
- $this->owner = $owner;
-
- return $this;
- }
-
- public function getPoll(): ?Poll {
- return $this->poll;
- }
-
- public function setPoll( ?Poll $poll ): self {
- $this->poll = $poll;
-
- return $this;
- }
}
diff --git a/src/Entity/Vote.php b/src/Entity/Vote.php
index c963563..71cd808 100755
--- a/src/Entity/Vote.php
+++ b/src/Entity/Vote.php
@@ -2,9 +2,10 @@
namespace App\Entity;
- use DateTimeInterface;
- use Doctrine\ORM\Mapping as ORM;
- use JMS\Serializer\Annotation as Serializer;
+use DateTime;
+use DateTimeInterface;
+use Doctrine\ORM\Mapping as ORM;
+use JMS\Serializer\Annotation as Serializer;
/**
* @ORM\Entity(repositoryClass="App\Repository\VoteRepository")
@@ -52,6 +53,10 @@ class Vote {
*/
private $stacksOfVotes;
+ public function __construct() {
+ $this->setCreationDate( new DateTime() );
+ }
+
public function display() {
$value = $this->getValue();
if ( ! $value ) {
@@ -67,27 +72,20 @@ class Vote {
}
}
- public function __construct() {
- $this->setCreationDate( new \DateTime() );
+ public function getValue(): ?string {
+ return $this->value;
+ }
+
+ public function setValue( ?string $value ): self {
+ $this->value = $value;
+
+ return $this;
}
public function getId(): ?int {
return $this->id;
}
- public function getPoll(): ?Poll {
- return $this->poll;
- }
-
- public function setPoll( ?Poll $poll ): self {
- $this->poll = $poll;
- if ( $poll ) {
- $poll->addVote( $this );
- }
-
- return $this;
- }
-
public function getChoice(): ?Choice {
return $this->choice;
}
@@ -98,12 +96,15 @@ class Vote {
return $this;
}
- public function getValue(): ?string {
- return $this->value;
+ public function getPoll(): ?Poll {
+ return $this->poll;
}
- public function setValue( ?string $value ): self {
- $this->value = $value;
+ public function setPoll( ?Poll $poll ): self {
+ $this->poll = $poll;
+ if ( $poll ) {
+ $poll->addVote( $this );
+ }
return $this;
}
diff --git a/src/Form/PollType.php b/src/Form/PollType.php
index 56f99a6..0f764b0 100644
--- a/src/Form/PollType.php
+++ b/src/Form/PollType.php
@@ -7,33 +7,29 @@ use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
-class PollType extends AbstractType
-{
- public function buildForm(FormBuilderInterface $builder, array $options)
- {
- $builder
- ->add('title')
- ->add('customUrl')
- ->add('description')
- ->add('creationDate')
- ->add('expiracyDate')
- ->add('kind')
- ->add('allowedAnswers')
- ->add('modificationPolicy')
- ->add('mailOnComment')
- ->add('mailOnVote')
- ->add('hideResults')
- ->add('showResultEvenIfPasswords')
- ->add('password')
- ->add('adminKey')
- ->add('owner')
- ;
- }
+class PollType extends AbstractType {
+ public function buildForm( FormBuilderInterface $builder, array $options ) {
+ $builder
+ ->add( 'title' )
+ ->add( 'customUrl' )
+ ->add( 'description' )
+ ->add( 'creationDate' )
+ ->add( 'expiracyDate' )
+ ->add( 'kind' )
+ ->add( 'allowedAnswers' )
+ ->add( 'modificationPolicy' )
+ ->add( 'mailOnComment' )
+ ->add( 'mailOnVote' )
+ ->add( 'hideResults' )
+ ->add( 'showResultEvenIfPasswords' )
+ ->add( 'password' )
+ ->add( 'adminKey' )
+ ->add( 'owner' );
+ }
- public function configureOptions(OptionsResolver $resolver)
- {
- $resolver->setDefaults([
- 'data_class' => Poll::class,
- ]);
- }
+ public function configureOptions( OptionsResolver $resolver ) {
+ $resolver->setDefaults( [
+ 'data_class' => Poll::class,
+ ] );
+ }
}
diff --git a/src/Kernel.php b/src/Kernel.php
index 655e796..4f202ae 100644
--- a/src/Kernel.php
+++ b/src/Kernel.php
@@ -6,33 +6,31 @@ use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait;
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Symfony\Component\HttpKernel\Kernel as BaseKernel;
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
+use function dirname;
-class Kernel extends BaseKernel
-{
- use MicroKernelTrait;
+class Kernel extends BaseKernel {
+ use MicroKernelTrait;
- protected function configureContainer(ContainerConfigurator $container): void
- {
- $container->import('../config/{packages}/*.yaml');
- $container->import('../config/{packages}/'.$this->environment.'/*.yaml');
+ protected function configureContainer( ContainerConfigurator $container ): void {
+ $container->import( '../config/{packages}/*.yaml' );
+ $container->import( '../config/{packages}/' . $this->environment . '/*.yaml' );
- if (is_file(\dirname(__DIR__).'/config/services.yaml')) {
- $container->import('../config/services.yaml');
- $container->import('../config/{services}_'.$this->environment.'.yaml');
- } elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) {
- (require $path)($container->withPath($path), $this);
- }
- }
+ if ( is_file( dirname( __DIR__ ) . '/config/services.yaml' ) ) {
+ $container->import( '../config/services.yaml' );
+ $container->import( '../config/{services}_' . $this->environment . '.yaml' );
+ } elseif ( is_file( $path = dirname( __DIR__ ) . '/config/services.php' ) ) {
+ ( require $path )( $container->withPath( $path ), $this );
+ }
+ }
- protected function configureRoutes(RoutingConfigurator $routes): void
- {
- $routes->import('../config/{routes}/'.$this->environment.'/*.yaml');
- $routes->import('../config/{routes}/*.yaml');
+ protected function configureRoutes( RoutingConfigurator $routes ): void {
+ $routes->import( '../config/{routes}/' . $this->environment . '/*.yaml' );
+ $routes->import( '../config/{routes}/*.yaml' );
- if (is_file(\dirname(__DIR__).'/config/routes.yaml')) {
- $routes->import('../config/routes.yaml');
- } elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) {
- (require $path)($routes->withPath($path), $this);
- }
- }
+ if ( is_file( dirname( __DIR__ ) . '/config/routes.yaml' ) ) {
+ $routes->import( '../config/routes.yaml' );
+ } elseif ( is_file( $path = dirname( __DIR__ ) . '/config/routes.php' ) ) {
+ ( require $path )( $routes->withPath( $path ), $this );
+ }
+ }
}
diff --git a/src/Repository/ChoiceRepository.php b/src/Repository/ChoiceRepository.php
index 0172fe7..fcc6bac 100755
--- a/src/Repository/ChoiceRepository.php
+++ b/src/Repository/ChoiceRepository.php
@@ -7,44 +7,42 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
/**
- * @method Choice|null find($id, $lockMode = null, $lockVersion = null)
- * @method Choice|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Choice|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method Choice|null findOneBy( array $criteria, array $orderBy = null )
* @method Choice[] findAll()
- * @method Choice[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method Choice[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class ChoiceRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, Choice::class);
- }
+class ChoiceRepository extends ServiceEntityRepository {
+ public function __construct( ManagerRegistry $registry ) {
+ parent::__construct( $registry, Choice::class );
+ }
- // /**
- // * @return Choice[] Returns an array of Choice objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('c')
- ->andWhere('c.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('c.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return Choice[] Returns an array of Choice objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('c')
+ ->andWhere('c.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('c.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?Choice
- {
- return $this->createQueryBuilder('c')
- ->andWhere('c.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?Choice
+ {
+ return $this->createQueryBuilder('c')
+ ->andWhere('c.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Repository/CommentRepository.php b/src/Repository/CommentRepository.php
index cddf55d..d8a2f2d 100755
--- a/src/Repository/CommentRepository.php
+++ b/src/Repository/CommentRepository.php
@@ -7,44 +7,42 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
/**
- * @method Comment|null find($id, $lockMode = null, $lockVersion = null)
- * @method Comment|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Comment|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method Comment|null findOneBy( array $criteria, array $orderBy = null )
* @method Comment[] findAll()
- * @method Comment[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method Comment[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class CommentRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, Comment::class);
- }
+class CommentRepository extends ServiceEntityRepository {
+ public function __construct( ManagerRegistry $registry ) {
+ parent::__construct( $registry, Comment::class );
+ }
- // /**
- // * @return Comment[] Returns an array of Comment objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('c')
- ->andWhere('c.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('c.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return Comment[] Returns an array of Comment objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('c')
+ ->andWhere('c.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('c.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?Comment
- {
- return $this->createQueryBuilder('c')
- ->andWhere('c.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?Comment
+ {
+ return $this->createQueryBuilder('c')
+ ->andWhere('c.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Repository/OwnerRepository.php b/src/Repository/OwnerRepository.php
index 3bffacf..64ebfa7 100755
--- a/src/Repository/OwnerRepository.php
+++ b/src/Repository/OwnerRepository.php
@@ -7,44 +7,42 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
/**
- * @method Owner|null find($id, $lockMode = null, $lockVersion = null)
- * @method Owner|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Owner|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method Owner|null findOneBy( array $criteria, array $orderBy = null )
* @method Owner[] findAll()
- * @method Owner[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method Owner[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class OwnerRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, Owner::class);
- }
+class OwnerRepository extends ServiceEntityRepository {
+ public function __construct( ManagerRegistry $registry ) {
+ parent::__construct( $registry, Owner::class );
+ }
- // /**
- // * @return Owner[] Returns an array of Owner objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('o')
- ->andWhere('o.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('o.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return Owner[] Returns an array of Owner objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('o')
+ ->andWhere('o.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('o.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?Owner
- {
- return $this->createQueryBuilder('o')
- ->andWhere('o.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?Owner
+ {
+ return $this->createQueryBuilder('o')
+ ->andWhere('o.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Repository/PollRepository.php b/src/Repository/PollRepository.php
index d090fa5..6091e20 100755
--- a/src/Repository/PollRepository.php
+++ b/src/Repository/PollRepository.php
@@ -5,48 +5,46 @@ namespace App\Repository;
use App\Entity\Poll;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
-use MongoDB\Driver\Manager;
/**
- * @method Poll|null find($id, $lockMode = null, $lockVersion = null)
- * @method Poll|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Poll|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method Poll|null findOneBy( array $criteria, array $orderBy = null )
* @method Poll[] findAll()
- * @method Poll[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method Poll[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class PollRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry
- $registry)
- {
- parent::__construct($registry, Poll::class);
- }
+class PollRepository extends ServiceEntityRepository {
+ public function __construct(
+ ManagerRegistry $registry
+ ) {
+ parent::__construct( $registry, Poll::class );
+ }
- // /**
- // * @return Poll[] Returns an array of Poll objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('p')
- ->andWhere('p.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('p.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return Poll[] Returns an array of Poll objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('p')
+ ->andWhere('p.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('p.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?Poll
- {
- return $this->createQueryBuilder('p')
- ->andWhere('p.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?Poll
+ {
+ return $this->createQueryBuilder('p')
+ ->andWhere('p.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Repository/StackOfVotesRepository.php b/src/Repository/StackOfVotesRepository.php
index 476a5ff..1626eed 100755
--- a/src/Repository/StackOfVotesRepository.php
+++ b/src/Repository/StackOfVotesRepository.php
@@ -7,44 +7,42 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
/**
- * @method StackOfVotes|null find($id, $lockMode = null, $lockVersion = null)
- * @method StackOfVotes|null findOneBy(array $criteria, array $orderBy = null)
+ * @method StackOfVotes|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method StackOfVotes|null findOneBy( array $criteria, array $orderBy = null )
* @method StackOfVotes[] findAll()
- * @method StackOfVotes[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method StackOfVotes[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class StackOfVotesRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, StackOfVotes::class);
- }
+class StackOfVotesRepository extends ServiceEntityRepository {
+ public function __construct( ManagerRegistry $registry ) {
+ parent::__construct( $registry, StackOfVotes::class );
+ }
- // /**
- // * @return StackOfVotes[] Returns an array of StackOfVotes objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('s')
- ->andWhere('s.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('s.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return StackOfVotes[] Returns an array of StackOfVotes objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('s')
+ ->andWhere('s.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('s.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?StackOfVotes
- {
- return $this->createQueryBuilder('s')
- ->andWhere('s.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?StackOfVotes
+ {
+ return $this->createQueryBuilder('s')
+ ->andWhere('s.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Repository/VoteRepository.php b/src/Repository/VoteRepository.php
index a95a2fd..358ef53 100755
--- a/src/Repository/VoteRepository.php
+++ b/src/Repository/VoteRepository.php
@@ -7,44 +7,42 @@ use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Common\Persistence\ManagerRegistry;
/**
- * @method Vote|null find($id, $lockMode = null, $lockVersion = null)
- * @method Vote|null findOneBy(array $criteria, array $orderBy = null)
+ * @method Vote|null find( $id, $lockMode = null, $lockVersion = null )
+ * @method Vote|null findOneBy( array $criteria, array $orderBy = null )
* @method Vote[] findAll()
- * @method Vote[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
+ * @method Vote[] findBy( array $criteria, array $orderBy = null, $limit = null, $offset = null )
*/
-class VoteRepository extends ServiceEntityRepository
-{
- public function __construct(ManagerRegistry $registry)
- {
- parent::__construct($registry, Vote::class);
- }
+class VoteRepository extends ServiceEntityRepository {
+ public function __construct( ManagerRegistry $registry ) {
+ parent::__construct( $registry, Vote::class );
+ }
- // /**
- // * @return Vote[] Returns an array of Vote objects
- // */
- /*
- public function findByExampleField($value)
- {
- return $this->createQueryBuilder('v')
- ->andWhere('v.exampleField = :val')
- ->setParameter('val', $value)
- ->orderBy('v.id', 'ASC')
- ->setMaxResults(10)
- ->getQuery()
- ->getResult()
- ;
- }
- */
+ // /**
+ // * @return Vote[] Returns an array of Vote objects
+ // */
+ /*
+ public function findByExampleField($value)
+ {
+ return $this->createQueryBuilder('v')
+ ->andWhere('v.exampleField = :val')
+ ->setParameter('val', $value)
+ ->orderBy('v.id', 'ASC')
+ ->setMaxResults(10)
+ ->getQuery()
+ ->getResult()
+ ;
+ }
+ */
- /*
- public function findOneBySomeField($value): ?Vote
- {
- return $this->createQueryBuilder('v')
- ->andWhere('v.exampleField = :val')
- ->setParameter('val', $value)
- ->getQuery()
- ->getOneOrNullResult()
- ;
- }
- */
+ /*
+ public function findOneBySomeField($value): ?Vote
+ {
+ return $this->createQueryBuilder('v')
+ ->andWhere('v.exampleField = :val')
+ ->setParameter('val', $value)
+ ->getQuery()
+ ->getOneOrNullResult()
+ ;
+ }
+ */
}
diff --git a/src/Service/MailService.php b/src/Service/MailService.php
index 5f6c72c..4356b84 100644
--- a/src/Service/MailService.php
+++ b/src/Service/MailService.php
@@ -12,6 +12,7 @@ use Exception;
use Swift_Mailer;
use Swift_Message;
use Swift_SmtpTransport;
+use Symfony\Component\Mailer\Exception\TransportExceptionInterface;
class MailService {
@@ -49,7 +50,7 @@ class MailService {
* @param Owner $foundOwner
* @param Poll|null $poll
*
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendCreationMailAction( Owner $foundOwner, Poll $poll = null ) {
@@ -66,74 +67,12 @@ class MailService {
return $this->sendMailWithVars( $config );
}
-
- /**
- * anti spam , limit to every minute TODO
- *
- * @param Owner $owner
- *
- * @return bool
- */
- public function antispamCheck( Owner $owner ) {
-
-// $lastSend = $admin_user->getRequestedPollsDate();
-// $now = new \DateTime();
-
-// if ( date_diff( $lastSend, $now ) < 60 ) {
-// // too soon!
-// die( 'too soon!' );
-// }
-// $admin_user->setRequestedPollsDate( $now );
-// $em->persist( $admin_user );
-// $em->flush();
- return true;
- }
-
- /**
- * send created polls to an owner
- *
- * @param Owner $owner
- *
- * @return int|void
- * @throws Exception
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
- */
- public function sendOwnerPollsAction( Owner $owner ) {
-
- $config = [
- 'owner' => $owner,
- 'title' => 'Framadate | Mes sondages',
- 'email_template' => 'emails/owner-list.html.twig',
- ];
- $this->sendMailWithVars( $config );
-
- return 1;
- }
-
-
- /**
- * @param Comment $comment
- *
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
- */
- public function sendCommentNotification( Comment $comment ) {
-
- $config = [
- 'comment' => $comment,
- 'owner' => $comment->getOwner(),
- 'title' => 'Framadate | commentaire de ' . $comment->getOwner()->getPseudo() . ' _ sondage ' . $comment->getPoll()->getTitle(),
- 'email_template' => 'emails/comment-notification.html.twig',
- ];
-
- $this->sendMailWithVars( $config );
- }
-
/**
* generic way to send email with html template
*
* @param $config
*
- * @throws \Symfony\Component\Mailer\Exception\TransportExceptionInterface
+ * @throws TransportExceptionInterface
*/
public function sendMailWithVars( $config ) {
@@ -209,4 +148,64 @@ class MailService {
}
+
+ /**
+ * anti spam , limit to every minute TODO
+ *
+ * @param Owner $owner
+ *
+ * @return bool
+ */
+ public function antispamCheck( Owner $owner ) {
+
+// $lastSend = $admin_user->getRequestedPollsDate();
+// $now = new \DateTime();
+
+// if ( date_diff( $lastSend, $now ) < 60 ) {
+// // too soon!
+// die( 'too soon!' );
+// }
+// $admin_user->setRequestedPollsDate( $now );
+// $em->persist( $admin_user );
+// $em->flush();
+ return true;
+ }
+
+ /**
+ * send created polls to an owner
+ *
+ * @param Owner $owner
+ *
+ * @return int|void
+ * @throws Exception
+ * @throws TransportExceptionInterface
+ */
+ public function sendOwnerPollsAction( Owner $owner ) {
+
+ $config = [
+ 'owner' => $owner,
+ 'title' => 'Framadate | Mes sondages',
+ 'email_template' => 'emails/owner-list.html.twig',
+ ];
+ $this->sendMailWithVars( $config );
+
+ return 1;
+ }
+
+ /**
+ * @param Comment $comment
+ *
+ * @throws TransportExceptionInterface
+ */
+ public function sendCommentNotification( Comment $comment ) {
+
+ $config = [
+ 'comment' => $comment,
+ 'owner' => $comment->getOwner(),
+ 'title' => 'Framadate | commentaire de ' . $comment->getOwner()->getPseudo() . ' _ sondage ' . $comment->getPoll()->getTitle(),
+ 'email_template' => 'emails/comment-notification.html.twig',
+ ];
+
+ $this->sendMailWithVars( $config );
+ }
}
diff --git a/src/Traits/TimeStampableTraitTrait.php b/src/Traits/TimeStampableTraitTrait.php
index 6a8d285..52e1cf2 100755
--- a/src/Traits/TimeStampableTraitTrait.php
+++ b/src/Traits/TimeStampableTraitTrait.php
@@ -4,7 +4,6 @@ namespace App\Traits;
use DateTimeInterface;
use Doctrine\ORM\Mapping as ORM;
-use PhpParser\Node\Scalar\String_;
trait TimeStampableTrait {
/**
@@ -15,9 +14,6 @@ trait TimeStampableTrait {
public function getCreatedAt(): ?DateTimeInterface {
return $this->createdAt;
}
- public function getCreatedAtAsString(): string {
- return $this->createdAt->format('c');
- }
public function setCreatedAt( DateTimeInterface $createdAt ): self {
$this->createdAt = $createdAt;
@@ -25,4 +21,8 @@ trait TimeStampableTrait {
return $this;
}
+ public function getCreatedAtAsString(): string {
+ return $this->createdAt->format( 'c' );
+ }
+
}