EditController.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?php
  2. namespace Muzich\PlaylistBundle\Controller;
  3. use Muzich\CoreBundle\lib\Controller;
  4. use Muzich\CoreBundle\Entity\Playlist;
  5. use Symfony\Component\HttpFoundation\Request;
  6. class EditController extends Controller
  7. {
  8. // TODO: Cette méthode ET les autres: Mettre à jour avec le gestionnaire d'accès (Security)
  9. public function updateOrderAction(Request $request, $playlist_id)
  10. {
  11. $playlist_manager = $this->getPlaylistManager();
  12. if (!($playlist = $playlist_manager->findOwnedPlaylistWithId($playlist_id, $this->getUser())) || !$request->get('elements'))
  13. return $this->jsonNotFoundResponse();
  14. $playlist_manager->updatePlaylistElementsOrder($playlist, $request->get('elements'));
  15. $this->flush();
  16. return $this->jsonSuccessResponse();
  17. }
  18. public function removeElementAction($playlist_id, $element_id)
  19. {
  20. $playlist_manager = $this->getPlaylistManager();
  21. if (!($playlist = $playlist_manager->findOwnedPlaylistWithId($playlist_id, $this->getUser())))
  22. return $this->jsonNotFoundResponse();
  23. $playlist_manager->removePlaylistElementWithId($playlist, $element_id);
  24. $this->flush();
  25. return $this->jsonSuccessResponse();
  26. }
  27. public function addElementAction($playlist_id, $element_id)
  28. {
  29. $playlist_manager = $this->getPlaylistManager();
  30. if (!($playlist = $playlist_manager->findOwnedPlaylistWithId($playlist_id, $this->getUser()))
  31. || !($element = $this->getElementWithId($element_id)))
  32. return $this->jsonNotFoundResponse();
  33. $playlist_manager->addElementToPlaylist($element, $playlist);
  34. $this->flush();
  35. return $this->jsonSuccessResponse();
  36. }
  37. public function addElementAndCreateAction(Request $request, $element_id)
  38. {
  39. if (!($element = $this->getElementWithId($element_id)))
  40. return $this->jsonNotFoundResponse();
  41. $form = $this->getPlaylistForm();
  42. $form->bind($request);
  43. if ($form->isValid())
  44. {
  45. $this->getPlaylistManager()->addElementToPlaylist($element, $form->getData());
  46. $this->flush();
  47. return $this->jsonSuccessResponse();
  48. }
  49. return $this->jsonResponseError('form_error',
  50. $this->render('MuzichPlaylistBundle:Show:form.html.twig', array(
  51. 'form' => $form->createView(),
  52. 'element_id' => $element_id
  53. ))->getContent()
  54. );
  55. }
  56. public function addElementAndCopyAction($playlist_id, $element_id)
  57. {
  58. if (!($element = $this->getElementWithId($element_id)))
  59. return $this->jsonNotFoundResponse();
  60. if (!($playlist = $this->getPlaylistManager()->findOneAccessiblePlaylistWithId($playlist_id, $this->getUser())))
  61. return $this->jsonNotFoundResponse();
  62. $new_playlist = $this->getPlaylistManager()->copyPlaylist($this->getUser(), $playlist);
  63. $this->getPlaylistManager()->addElementToPlaylist($element, $new_playlist);
  64. $this->getPlaylistManager()->removePickedPlaylistToUser($this->getUser(), $playlist);
  65. $this->flush();
  66. return $this->jsonSuccessResponse();
  67. }
  68. public function deleteAction($playlist_id)
  69. {
  70. if (!($playlist = $this->getPlaylistManager()->findOwnedPlaylistWithId($playlist_id, $this->getUser())))
  71. throw $this->createNotFoundException();
  72. $this->getPlaylistManager()->deletePlaylist($playlist);
  73. $this->flush();
  74. $this->setFlash('success', 'playlist.delete.success');
  75. return $this->redirect($this->generateUrl('playlists_user', array('user_slug' => $this->getUser()->getSlug())));
  76. }
  77. public function unpickAction($playlist_id)
  78. {
  79. $playlist_manager = $this->getPlaylistManager();
  80. if (!($playlist = $playlist_manager->findPlaylistWithId($playlist_id, $this->getUser())))
  81. throw $this->createNotFoundException();
  82. $playlist_manager->removePickedPlaylistToUser($this->getUser(), $playlist);
  83. $this->flush();
  84. $this->setFlash('success', 'playlist.delete.success');
  85. return $this->redirect($this->generateUrl('playlists_user', array('user_slug' => $this->getUser()->getSlug())));
  86. }
  87. }