ソースを参照

Récupération des playlists picked

Sevajol Bastien 11 年 前
コミット
eb99a500ab

+ 10 - 0
src/Muzich/CoreBundle/DataFixtures/ORM/LoadUsersElementsFavoritesData.php ファイルの表示

@@ -58,6 +58,7 @@ class LoadUsersElementsFavoritesData  extends AbstractFixture implements Ordered
58 58
     // favoris de bux
59 59
     $bux = $this->entity_manager->merge($this->getReference('user_bux'));
60 60
     $paul = $this->entity_manager->merge($this->getReference('user_paul'));
61
+    $bob = $this->entity_manager->merge($this->getReference('user_bob'));
61 62
     
62 63
     $youtube_heretik_1 = $this->getReference('element_youtube_heretik_1');
63 64
     $youtube_djfab_1 = $this->getReference('element_youtube_djfab_1');
@@ -114,8 +115,17 @@ class LoadUsersElementsFavoritesData  extends AbstractFixture implements Ordered
114 115
     $playlist2 = $this->createPlaylist("Ma playlist perso",
115 116
     $bux, false, array($youtube_heretik_1, $youtube_djfab_1));
116 117
     
118
+    $playlist_bob = $this->createPlaylist("A travers l'espace",
119
+    $bob, true, array(
120
+      $this->getReference('element_infected_psycho'),
121
+      $this->getReference('element_infected_muse'),
122
+      $this->getReference('element_joelle_1'),
123
+      $this->getReference('element_joelle_2')
124
+    ));
125
+    
117 126
     $playlist_manager = new PlaylistManager($this->entity_manager);
118 127
     $playlist_manager->addPickedPlaylistToUser($paul, $playlist1);
128
+    $playlist_manager->addPickedPlaylistToUser($bux, $playlist_bob);
119 129
     
120 130
     $this->entity_manager->flush();
121 131
   }

+ 1 - 1
src/Muzich/CoreBundle/Entity/Playlist.php ファイルの表示

@@ -57,7 +57,7 @@ class Playlist
57 57
   protected $public = false;
58 58
   
59 59
   /**
60
-   * @ORM\OneToMany(targetEntity="UserPlaylistPicked", mappedBy="user")
60
+   * @ORM\OneToMany(targetEntity="UserPlaylistPicked", mappedBy="playlist")
61 61
    */
62 62
   protected $user_playlists_pickeds;
63 63
   

+ 1 - 1
src/Muzich/CoreBundle/Entity/UserPlaylistPicked.php ファイルの表示

@@ -26,7 +26,7 @@ class UserPlaylistPicked
26 26
   
27 27
   /**
28 28
    * @ORM\ManyToOne(targetEntity="Playlist", inversedBy="users_favorites")
29
-   * @ORM\JoinColumn(name="tag_id", referencedColumnName="id", onDelete="CASCADE")
29
+   * @ORM\JoinColumn(name="playlist_id", referencedColumnName="id", onDelete="CASCADE")
30 30
    */
31 31
   protected $playlist;
32 32
   

+ 8 - 0
src/Muzich/CoreBundle/Managers/PlaylistManager.php ファイルの表示

@@ -29,6 +29,14 @@ class PlaylistManager
29 29
     ;
30 30
   }
31 31
   
32
+  public function getUserPublicsOrOwnedOrPickedPlaylists(User $user_viewed, User $user = null)
33
+  {
34
+    return $this->entity_manager->getRepository('MuzichCoreBundle:Playlist')
35
+      ->getUserPublicPlaylistsOrOwnedOrPickedQueryBuilder($user_viewed, $user)
36
+      ->getQuery()->getResult()
37
+    ;
38
+  }
39
+  
32 40
   public function getOwnedsPlaylists(User $user)
33 41
   {
34 42
     return $this->getUserPublicsOrOwnedPlaylists($user, $user);

+ 15 - 1
src/Muzich/CoreBundle/Repository/PlaylistRepository.php ファイルの表示

@@ -45,11 +45,25 @@ class PlaylistRepository extends EntityRepository
45 45
     }
46 46
     
47 47
     return $this->getPlaylistsQueryBuilder()
48
-      ->where('p.owner = :owner_id')
48
+      ->where('p.owner = :owner_id OR pickers.user = :picker_id')
49 49
       ->setParameter('owner_id', $current_user->getId())
50 50
     ;
51 51
   }
52 52
   
53
+  public function getUserPublicPlaylistsOrOwnedOrPickedQueryBuilder(User $viewed_user, User $current_user = null)
54
+  {
55
+    if (!$current_user)
56
+    {
57
+      return $this->getUserPublicPlaylistsOrOwnedQueryBuilder($viewed_user, $current_user);
58
+    }
59
+    
60
+    return $this->getUserPublicPlaylistsOrOwnedQueryBuilder($viewed_user, $current_user)
61
+      ->leftJoin('p.user_playlists_pickeds', 'pickers')
62
+      ->orWhere('pickers.user = :picker_id')
63
+      ->setParameter('picker_id', $current_user->getId())
64
+    ;
65
+  }
66
+  
53 67
   public function findOnePlaylistOwned($playlist_id, User $user)
54 68
   {
55 69
     return $this->getPlaylistsQueryBuilder()

+ 3 - 3
src/Muzich/PlaylistBundle/Controller/ShowController.php ファイルの表示

@@ -18,13 +18,13 @@ class ShowController extends Controller
18 18
     
19 19
     return $this->render('MuzichPlaylistBundle:Show:user.html.twig', array(
20 20
       'viewed_user' => $viewed_user,
21
-      'playlists'   => $this->getPlaylistManager()->getUserPublicsOrOwnedPlaylists($viewed_user, $this->getUser(true))
21
+      'playlists'   => $this->getPlaylistManager()->getUserPublicsOrOwnedorPickedPlaylists($viewed_user, $this->getUserOrNullIfVisitor())
22 22
     ));
23 23
   }
24 24
   
25 25
   public function showAction($user_slug, $playlist_id)
26 26
   {
27
-    if (!($playlist = $this->getPlaylistManager()->findOneAccessiblePlaylistWithId($playlist_id, $this->getUser(true))))
27
+    if (!($playlist = $this->getPlaylistManager()->findOneAccessiblePlaylistWithId($playlist_id, $this->getUserOrNullIfVisitor())))
28 28
       throw $this->createNotFoundException();
29 29
     
30 30
     return $this->render('MuzichPlaylistBundle:Show:show.html.twig', array(
@@ -36,7 +36,7 @@ class ShowController extends Controller
36 36
   {
37 37
     $playlist_manager = $this->getPlaylistManager();
38 38
     
39
-    if (!($playlist = $playlist_manager->findOneAccessiblePlaylistWithId($playlist_id, $this->getUser(true))))
39
+    if (!($playlist = $playlist_manager->findOneAccessiblePlaylistWithId($playlist_id, $this->getUserOrNullIfVisitor())))
40 40
       throw $this->createNotFoundException();
41 41
     
42 42
     $autoplaym = new AutoplayManager($playlist_manager->getPlaylistElements($playlist, $offset), $this->container);