diff --git a/doc/SCHEMA:framadate_api.uml b/doc/SCHEMA:framadate_api.uml
new file mode 100644
index 0000000..0e05116
--- /dev/null
+++ b/doc/SCHEMA:framadate_api.uml
@@ -0,0 +1,80 @@
+
+
+ DATABASE
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.SCHEMA:framadate_api
+
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.stack_of_votes
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.owner
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.comment
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.poll
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.vote
+ 2c3996c6-29d5-4c17-9504-1606d308e53c.TABLE:framadate_api.choice
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Columns
+ Key columns
+ Virtual foreign keys
+
+
+
diff --git a/doc/framadate_api.png b/doc/framadate_api.png
new file mode 100644
index 0000000..52e4c27
Binary files /dev/null and b/doc/framadate_api.png differ
diff --git a/doc/framadate_api.svg b/doc/framadate_api.svg
new file mode 100644
index 0000000..4853da5
--- /dev/null
+++ b/doc/framadate_api.svg
@@ -0,0 +1,1346 @@
+
diff --git a/src/DataFixtures/AppPollFixtures.php b/src/DataFixtures/AppPollFixtures.php
index 838f8fa..36bde47 100755
--- a/src/DataFixtures/AppPollFixtures.php
+++ b/src/DataFixtures/AppPollFixtures.php
@@ -13,6 +13,8 @@ use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Persistence\ObjectManager;
class AppPollFixtures extends Fixture {
+ public const POLL_FIXTURE_ONE = 'citron-poll-fixture';
+
public function load( ObjectManager $manager ) {
/**
@@ -35,41 +37,44 @@ class AppPollFixtures extends Fixture {
$manager->flush();
- $poll = new Poll();
- $poll->setTitle( 'citron ou orange' )
+ $pollCitronOrange = new Poll();
+ $pollCitronOrange->setTitle( 'citron ou orange' )
->setCustomUrl('citron')
->setDescription( 'votre sorbert préféré' )
->setAdminKey( uniqid() )
->setModificationPolicy( 'nobody' )
->setPassword('le pass woute woute');
- $poll->setMailOnVote( true );
- $poll->setOwner( $owner );
- $owner->addPoll( $poll );
+
+ $this->addReference(self::POLL_FIXTURE_ONE, $pollCitronOrange);
+
+ $pollCitronOrange->setMailOnVote( true );
+ $pollCitronOrange->setOwner( $owner );
+ $owner->addPoll( $pollCitronOrange );
$choiceA = new Choice();
$choiceA->setName( 'citron' );
$choiceB = new Choice();
$choiceB->setName( 'orange' );
- $poll
+ $pollCitronOrange
->addChoice( $choiceA )
->addChoice( $choiceB );
- $manager->persist( $poll );
+ $manager->persist( $pollCitronOrange );
$stack1 = new StackOfVotes();
$stack1
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setOwner( $voter );
$voteA = new Vote();
$voteA
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack1 )
->setValue( "yes" )
->setChoice( $choiceA );
$voteB = new Vote();
$voteB
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack1 )
->setValue( "yes" )
->setChoice( $choiceB );
@@ -81,12 +86,12 @@ class AppPollFixtures extends Fixture {
$stack2 = new StackOfVotes();
$stack2->setPseudo( 'Jean indécis' );
$stack2
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setOwner( $voter );
$voteA = new Vote();
$voteA
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack2 )
->setValue( "maybe" )
->setChoice( $choiceA );
@@ -94,37 +99,37 @@ class AppPollFixtures extends Fixture {
$manager->persist( $stack2 );
- $poll = new Poll();
+ $pollCitronOrange = new Poll();
$ownerComment = new Comment();
$ownerComment
->setText( "trop bien ce sondage wohooo! signé l'auteur." )
->setPseudo('un gens qui commente')
->setOwner( $owner );
- $poll->addComment( $ownerComment );
+ $pollCitronOrange->addComment( $ownerComment );
$someoneComment = new Comment();
$someoneComment
->setText( "comme l'auteur se la raconte. PFFFF!" )
->setPseudo('un gens qui commente')
->setOwner( $commenterMan );
- $poll->addComment( $someoneComment );
+ $pollCitronOrange->addComment( $someoneComment );
- $poll->setTitle( 'démo sondage de texte avec deux commentaires' )
+ $pollCitronOrange->setTitle( 'démo sondage de texte avec deux commentaires' )
->setCustomUrl('demo')
->setDescription( 'description du sondage 2' );
- $poll->setAdminKey( uniqid() );
- $poll->setModificationPolicy( 'self' );
- $poll->setMailOnComment( true );
+ $pollCitronOrange->setAdminKey( uniqid() );
+ $pollCitronOrange->setModificationPolicy( 'self' );
+ $pollCitronOrange->setMailOnComment( true );
- $poll->addTextChoiceArray( [ 'un truc', 'deux trucs' ] );
- $poll->setOwner( $owner );
- $owner->addPoll( $poll );
+ $pollCitronOrange->addTextChoiceArray( [ 'un truc', 'deux trucs' ] );
+ $pollCitronOrange->setOwner( $owner );
+ $owner->addPoll( $pollCitronOrange );
- $manager->persist( $poll );
+ $manager->persist( $pollCitronOrange );
$manager->persist( $someoneComment );
$manager->persist( $ownerComment );
@@ -132,16 +137,16 @@ class AppPollFixtures extends Fixture {
// voting test with 2 people
// poll with date type
- $poll = new Poll();
+ $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();
- $choice2->setName( $poll->addDaysToDate( $firstDate, 1 )->format( 'Y-m-d H:i:s' ) );
- $choice3->setName( $poll->addDaysToDate( $firstDate, 2 )->format( 'Y-m-d H:i:s' ) );
+ $choice2->setName( $pollCitronOrange->addDaysToDate( $firstDate, 1 )->format( 'Y-m-d H:i:s' ) );
+ $choice3->setName( $pollCitronOrange->addDaysToDate( $firstDate, 2 )->format( 'Y-m-d H:i:s' ) );
- $poll->setTitle( "c'est pour aujourdhui ou pour demain" )
+ $pollCitronOrange->setTitle( "c'est pour aujourdhui ou pour demain" )
->setCustomUrl('aujourdhui-ou-demain')
->setDescription( 'Vous avez le choix dans la date' )
->setKind( 'date' )
@@ -150,11 +155,11 @@ class AppPollFixtures extends Fixture {
->addChoice( $choice2 )
->addChoice( $choice3 )
->setModificationPolicy( 'self' );
- $manager->persist( $poll );
+ $manager->persist( $pollCitronOrange );
// poll with cartoon choices
- $poll = new Poll();
- $poll->setTitle( 'dessin animé préféré' )
+ $pollCitronOrange = new Poll();
+ $pollCitronOrange->setTitle( 'dessin animé préféré' )
->setCustomUrl('dessin-anime')
->setDescription( 'choisissez votre animé préféré' )
->setOwner( $owner )
@@ -174,60 +179,60 @@ class AppPollFixtures extends Fixture {
->setPseudo('un gens qui commente')
->setText( "allez boumbo!" )
->setOwner( $commenterMan );
- $poll->addComment( $someoneComment );
+ $pollCitronOrange->addComment( $someoneComment );
$someoneComment2 = new Comment();
$someoneComment2
->setPseudo('un gens qui commente')
->setText( "je suis pour la team rocket de digimon" )
->setOwner( $owner );
- $poll->addComment( $someoneComment2 );
+ $pollCitronOrange->addComment( $someoneComment2 );
- $manager->persist( $poll );
+ $manager->persist( $pollCitronOrange );
$stack = new StackOfVotes();
$stack->setPseudo( 'Wulfila' );
$stack
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setOwner( $voter );
$vote = new Vote();
$vote
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack )
->setValue( "yes" )
- ->setChoice( $poll->getChoices()[ 2 ] );
+ ->setChoice( $pollCitronOrange->getChoices()[ 2 ] );
$vote = new Vote();
$vote
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack )
->setValue( "maybe" )
- ->setChoice( $poll->getChoices()[ 1 ] );
+ ->setChoice( $pollCitronOrange->getChoices()[ 1 ] );
$manager->persist( $stack );
$stack = new StackOfVotes();
$stack->setPseudo( 'Tykayn' );
$stack
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setOwner( $voter );
$vote = new Vote();
$vote
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack )
->setValue( "yes" )
- ->setChoice( $poll->getChoices()[ 1 ] );
+ ->setChoice( $pollCitronOrange->getChoices()[ 1 ] );
$vote = new Vote();
$vote
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack )
->setValue( "yes" )
- ->setChoice( $poll->getChoices()[ 2 ] );
+ ->setChoice( $pollCitronOrange->getChoices()[ 2 ] );
$vote = new Vote();
$vote
- ->setPoll( $poll )
+ ->setPoll( $pollCitronOrange )
->setStacksOfVotes( $stack )
->setValue( "no" )
- ->setChoice( $poll->getChoices()[ 2 ] );
+ ->setChoice( $pollCitronOrange->getChoices()[ 2 ] );
$manager->persist( $stack );
diff --git a/src/DataFixtures/CommentFixtures.php b/src/DataFixtures/CommentFixtures.php
index 59e6ff7..6b78158 100644
--- a/src/DataFixtures/CommentFixtures.php
+++ b/src/DataFixtures/CommentFixtures.php
@@ -6,9 +6,17 @@ use App\Entity\Comment;
use App\Entity\Owner;
use App\Entity\Poll;
use Doctrine\Bundle\FixturesBundle\Fixture;
+use Doctrine\Common\DataFixtures\DependentFixtureInterface;
use Doctrine\Persistence\ObjectManager;
-class CommentFixtures extends Fixture {
+class CommentFixtures extends Fixture implements DependentFixtureInterface {
+ public function getDependencies()
+ {
+ return [
+ AppPollFixtures::class,
+ ];
+ }
+
public function load( ObjectManager $manager ) {
$emPoll = $manager->getRepository( Poll::class );
@@ -20,7 +28,7 @@ class CommentFixtures extends Fixture {
->setPseudo( 'Wulfila' );
// comment on "citron ou orange"
- $pollCitronOrange = $emPoll->findOneByCustomUrl( 'citron' );
+ $pollCitronOrange = $this->getReference(AppPollFixtures::POLL_FIXTURE_ONE);
if ( $pollCitronOrange ) {
$comment = new Comment();