LoadGroupData.php 4.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. <?php
  2. namespace Muzich\UserBundle\DataFixtures\ORM;
  3. use Doctrine\Common\DataFixtures\AbstractFixture;
  4. use Doctrine\Common\DataFixtures\OrderedFixtureInterface;
  5. use Symfony\Component\DependencyInjection\ContainerAwareInterface;
  6. use Symfony\Component\DependencyInjection\ContainerInterface;
  7. use Muzich\CoreBundle\Entity\Group;
  8. use Muzich\CoreBundle\Entity\FollowGroup;
  9. use Muzich\CoreBundle\Entity\GroupsTagsFavorites;
  10. class LoadGroupData extends AbstractFixture implements OrderedFixtureInterface, ContainerAwareInterface
  11. {
  12. private $container;
  13. private $entity_manager;
  14. public function setContainer(ContainerInterface $container = null)
  15. {
  16. $this->container = $container;
  17. }
  18. public function getOrder()
  19. {
  20. return 4;
  21. }
  22. protected function getArrayOfTag($names)
  23. {
  24. $tags = array();
  25. foreach ($names as $name)
  26. {
  27. $tags[] = $this->entity_manager->merge($this->getReference('tag_'.$name));
  28. }
  29. return $tags;
  30. }
  31. /**
  32. *
  33. */
  34. protected function createGroup($reference_id, $name, $description, $open, $owner)
  35. {
  36. $group = new Group();
  37. $group->setName($name);
  38. $group->setDescription($description);
  39. $group->setOpen($open);
  40. $group->setOwner($owner);
  41. $this->entity_manager->persist($group);
  42. $this->addReference('group_'.$reference_id, $group);
  43. return $group;
  44. }
  45. protected function theyFollowGroup($followers, $group)
  46. {
  47. foreach ($followers as $follower)
  48. {
  49. $followGroup = new FollowGroup();
  50. $followGroup->setFollower($follower);
  51. $followGroup->setGroup($group);
  52. $this->entity_manager->persist($followGroup);
  53. }
  54. }
  55. protected function groupHasTags($tags, $group)
  56. {
  57. foreach ($tags as $pos => $tag)
  58. {
  59. $GroupsTagsFavorites = new GroupsTagsFavorites();
  60. $GroupsTagsFavorites->setTag($tag);
  61. $GroupsTagsFavorites->setGroup($group);
  62. $GroupsTagsFavorites->setPosition($pos);
  63. $this->entity_manager->persist($GroupsTagsFavorites);
  64. }
  65. }
  66. public function load($entity_manager)
  67. {
  68. $this->entity_manager = $entity_manager;
  69. // Création des groupes
  70. $group_dudeldrum = $this->createGroup('dudeldrum', 'DUDELDRUM',
  71. nl2br("Un groupe de musique médievale."),
  72. false, $this->entity_manager->merge($this->getReference('user_joelle')));
  73. $group_fan_de_psytrance = $this->createGroup('fan_de_psytrance', 'Fans de psytrance',
  74. "La Trance psychédélique (souvent appelée psytrance) est une forme de trance (style de musique électronique)
  75. apparue au début des années 1990 à Goa, Inde, d'où le nom de \"Goa\" ou \"trance-Goa\" donné au départ à ce
  76. courant musical (ou encore Hippie Trance, 604 par analogie graphique avec GOA). La trance psychédélique est
  77. caractérisée par un rythme rapide, dans la gamme des 125 à 160 battements par minute (bpm), contrairement à
  78. l'ambient et autres formes d'house ou de techno. Ses basses sont fortes, sans interruption, sans changement
  79. et recouvertes par beaucoup d'autres rythmes, souvent produits par le célèbre synthétiseur Roland TB-303.",
  80. true, $this->entity_manager->merge($this->getReference('user_bob')));
  81. $group_joelle = $this->createGroup('joelle', 'Le groupe de joelle',
  82. "Joelle, et ben elle aime bien la musique d'abord.",
  83. true, $this->entity_manager->merge($this->getReference('user_joelle')));
  84. // Followers
  85. $this->theyFollowGroup(array(
  86. $this->entity_manager->merge($this->getReference('user_bux')),
  87. $this->entity_manager->merge($this->getReference('user_jean'))
  88. ), $group_dudeldrum);
  89. $this->theyFollowGroup(array(
  90. $this->entity_manager->merge($this->getReference('user_bux')),
  91. $this->entity_manager->merge($this->getReference('user_jean')),
  92. $this->entity_manager->merge($this->getReference('user_paul')),
  93. $this->entity_manager->merge($this->getReference('user_bob'))
  94. ), $group_fan_de_psytrance);
  95. // Tags
  96. $this->groupHasTags(array(
  97. $this->entity_manager->merge($this->getReference('tag_medieval'))
  98. ), $group_dudeldrum);
  99. $this->groupHasTags(array(
  100. $this->entity_manager->merge($this->getReference('tag_psytrance'))
  101. ), $group_fan_de_psytrance);
  102. $this->groupHasTags(array(
  103. $this->entity_manager->merge($this->getReference('tag_chanteuse'))
  104. ), $group_joelle);
  105. $this->entity_manager->flush();
  106. }
  107. }