PlaylistManager.php 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <?php
  2. namespace Muzich\CoreBundle\Managers;
  3. use Doctrine\ORM\EntityManager;
  4. use Muzich\CoreBundle\Entity\Playlist;
  5. use Muzich\CoreBundle\Entity\User;
  6. use Muzich\CoreBundle\Entity\UserPlaylistPicked;
  7. use \Doctrine\Common\Collections\ArrayCollection;
  8. class PlaylistManager
  9. {
  10. protected $entity_manager;
  11. protected $user;
  12. public function __construct(EntityManager $entity_manager)
  13. {
  14. $this->entity_manager = $entity_manager;
  15. }
  16. public function findOnePlaylistWithId($playlist_id, User $user = null)
  17. {
  18. $query_builder = $this->entity_manager->createQueryBuilder()
  19. ->select('p')
  20. ->from('MuzichCoreBundle:Playlist', 'p')
  21. ->where('p.id = :playlist_id')
  22. ;
  23. if ($user)
  24. {
  25. $query_builder->andWhere('p.public = 1 OR p.owner = :user_id');
  26. }
  27. else
  28. {
  29. $query_builder->andWhere('p.public = 1');
  30. }
  31. return $query_builder->getWuery()->getResult();
  32. }
  33. public function getNewPlaylist(User $owner)
  34. {
  35. $playlist = new Playlist();
  36. $playlist->setOwner($owner);
  37. return $playlist;
  38. }
  39. public function addPickedPlaylistToUser(User $user, Playlist $playlist)
  40. {
  41. if (!$user->havePlaylistPicked($playlist))
  42. {
  43. $user_playlist_picked = new UserPlaylistPicked();
  44. $user_playlist_picked->init($user, $playlist);
  45. $user->getUserPlaylistsPickeds()->add($user_playlist_picked);
  46. $this->entity_manager->persist($user);
  47. $this->entity_manager->persist($user_playlist_picked);
  48. }
  49. }
  50. public function removePickedPlaylistToUser(User $user, Playlist $playlist)
  51. {
  52. if ($user->havePlaylistPicked($playlist))
  53. {
  54. $user_playlists_pickeds = new ArrayCollection();
  55. foreach ($user->getUserPlaylistsPickeds() as $user_playlist_picked)
  56. {
  57. if ($user_playlist_picked->getPlaylist()->getId() == $playlist->getId())
  58. {
  59. $this->entity_manager->remove($user_playlist_picked);
  60. }
  61. else
  62. {
  63. $user_playlists_pickeds->add($user_playlist_picked);
  64. }
  65. }
  66. $user->setUserPlaylistsPickeds($user_playlists_pickeds);
  67. $this->entity_manager->persist($user);
  68. }
  69. }
  70. public function copyPlaylist(User $user, Playlist $playlist)
  71. {
  72. $playlist_copied = new Playlist();
  73. $playlist_copied->setOwner($user);
  74. $playlist_copied->setTags($playlist->getTags());
  75. $playlist_copied->setElements($playlist->getElements());
  76. $playlist_copied->setCopied($playlist);
  77. $playlist->addCopy($playlist_copied);
  78. $user->getPlaylistsOwneds()->add($playlist_copied);
  79. $this->entity_manager->persist($playlist_copied);
  80. $this->entity_manager->persist($user);
  81. }
  82. }