diff --git a/CodeIgniter-3.1.13/application/controllers/Artiste.php b/CodeIgniter-3.1.13/application/controllers/Artiste.php index 0c2458e..97e80f4 100644 --- a/CodeIgniter-3.1.13/application/controllers/Artiste.php +++ b/CodeIgniter-3.1.13/application/controllers/Artiste.php @@ -7,8 +7,10 @@ class Artiste extends CI_Controller { parent::__construct(); $this->load->model('Model_artist'); $this->load->model('Model_music'); + $this->load->model('Model_playlist'); $this->load->helper('url'); $this->load->helper('html'); + $this->load->library('session'); } public function index($artiste_id){ @@ -23,6 +25,7 @@ class Artiste extends CI_Controller { // Charger la vue avec les détails de l'artiste et ses albums $data['artiste'] = $artiste; $data['albums'] = $albums; + $data['mostUsedGenre'] = $mostUsedGenre; // Passer $mostUsedGenre à la vue $data['title']="Détails de l'artiste - Onzeur ".$artiste->name; $data['css'] = 'assets/css/artiste_details'; @@ -51,6 +54,11 @@ class Artiste extends CI_Controller { $data['title']="Détails de l'artiste - Onzeur "; $data['css'] = 'assets/css/artists_list.css'; + if ($this->session->userdata('user_id')) { + $user_id = $this->session->userdata('user_id'); + $data['user_playlists'] = $this->Model_playlist->get_user_playlists($user_id); + } + $this->load->view('layout/header_dark',$data); $this->load->view('artists_list', $data); $this->load->view('layout/footer_dark'); diff --git a/CodeIgniter-3.1.13/application/controllers/Playlists.php b/CodeIgniter-3.1.13/application/controllers/Playlists.php index 80ca60f..03d214b 100644 --- a/CodeIgniter-3.1.13/application/controllers/Playlists.php +++ b/CodeIgniter-3.1.13/application/controllers/Playlists.php @@ -316,19 +316,17 @@ class Playlists extends CI_Controller { } public function add_music_to_playlist($music_id, $playlist_id) { - // Vérifiez si l'utilisateur est connecté + // Vérifier si l'utilisateur est connecté if (!$this->session->userdata('user_id')) { redirect('utilisateur/connexion'); } - // Ajoutez la musique à la playlist spécifiée $data = array( 'playlist_id' => $playlist_id, - 'song_id' => $music_id // Utilisez 'song_id' au lieu de 'music_id' + 'song_id' => $music_id ); $this->Model_playlist->add_song_to_playlist($data); - // Redirigez l'utilisateur vers la vue de la playlist redirect('playlists/view/' . $playlist_id); } @@ -375,6 +373,56 @@ class Playlists extends CI_Controller { $data['title']="Ajouter les musiques d'un Artiste à la Playlist"; $data['css']="assets/css/playlist_add_song"; + $this->load->view('layout/header_dark', $data); + $this->load->view('playlist_add_artist',$data); + $this->load->view('layout/footer_dark'); + } + } + + public function add_artist_in_playlist_from_list($artist_id,$playlist_id = NULL) { + if($playlist_id === NULL){ + $playlist_id = $this->input->post('playlist_id'); + } + $this->verify_playlist_ownership($playlist_id); + + if ($this->input->post() || $playlist_id) { + // Récupérer l'ID de l'artiste à partir du formulaire + $songs = $this->Model_music->get_songs_by_artist($artist_id); + $all_songs_exist = true; // Variable pour vérifier si toutes les chansons existent déjà dans la playlist + + // Vérifier si toutes les chansons de l'artiste existent déjà dans la playlist + foreach ($songs as $song) { + if (!$this->Model_playlist->song_exists_in_playlist($playlist_id, $song->id)) { + $all_songs_exist = false; + break; + } + } + + if ($all_songs_exist) { + $this->session->set_flashdata('error', 'Toutes les chansons de cet artiste existent déjà dans la playlist.'); + } else { + foreach ($songs as $song) { + if (!$this->Model_playlist->song_exists_in_playlist($playlist_id, $song->id)) { + $data = array( + 'playlist_id' => $playlist_id, + 'song_id' => $song->id + ); + $this->Model_playlist->add_song_to_playlist($data); + } + } + + $this->session->set_flashdata('success', 'Les chansons de l\'artiste ont été ajoutées avec succès à la playlist.'); + } + + redirect('playlists/view/' . $playlist_id); + } else { + // Récupérer tous les artistes disponibles + $data['artists'] = $this->Model_music->get_all_artists(); + $data['playlist_id'] = $playlist_id; + + $data['title']="Ajouter les musiques d'un Artiste à la Playlist"; + $data['css']="assets/css/playlist_add_song"; + $this->load->view('layout/header_dark', $data); $this->load->view('playlist_add_artist',$data); $this->load->view('layout/footer_dark'); diff --git a/CodeIgniter-3.1.13/application/controllers/Search.php b/CodeIgniter-3.1.13/application/controllers/Search.php index 985f5ff..cf5a2bc 100644 --- a/CodeIgniter-3.1.13/application/controllers/Search.php +++ b/CodeIgniter-3.1.13/application/controllers/Search.php @@ -6,7 +6,9 @@ class Search extends CI_Controller { public function __construct(){ parent::__construct(); $this->load->model('Search_model'); + $this->load->model('Model_playlist'); $this->load->helper(['url', 'html']); + $this->load->library('session'); } public function index(){ @@ -39,6 +41,11 @@ class Search extends CI_Controller { $data['albums'] = $albums; $data['genres'] = $genres; $data['artistes'] = $artistes; + + if ($this->session->userdata('user_id')) { + $user_id = $this->session->userdata('user_id'); + $data['user_playlists'] = $this->Model_playlist->get_user_playlists($user_id); + } $data['title'] = "Résultats de la recherche"; $data['css'] = "assets/css/search_results"; diff --git a/CodeIgniter-3.1.13/application/views/albums_list.php b/CodeIgniter-3.1.13/application/views/albums_list.php index 7087d53..a73e081 100644 --- a/CodeIgniter-3.1.13/application/views/albums_list.php +++ b/CodeIgniter-3.1.13/application/views/albums_list.php @@ -74,4 +74,4 @@ // Redirection vers la méthode du contrôleur Playlists pour ajouter la chanson à la playlist spécifiée window.location.href = "" + albumId + "/" + playlistId; } - + \ No newline at end of file diff --git a/CodeIgniter-3.1.13/application/views/artists_list.php b/CodeIgniter-3.1.13/application/views/artists_list.php index 5a6dbf2..5e5ee89 100644 --- a/CodeIgniter-3.1.13/application/views/artists_list.php +++ b/CodeIgniter-3.1.13/application/views/artists_list.php @@ -1,24 +1,33 @@ - -
-

Liste des Artistes

-
- Trier par ordre alphabétique | - Trier par ordre inverse -
- +
+

Liste des Artistes

+ - + +
diff --git a/CodeIgniter-3.1.13/application/views/search_results.php b/CodeIgniter-3.1.13/application/views/search_results.php index 6ce9c80..433001b 100644 --- a/CodeIgniter-3.1.13/application/views/search_results.php +++ b/CodeIgniter-3.1.13/application/views/search_results.php @@ -8,14 +8,22 @@

Musiques

@@ -24,16 +32,24 @@

Albums

@@ -57,13 +73,21 @@

Artistes

@@ -73,3 +97,19 @@ + \ No newline at end of file diff --git a/CodeIgniter-3.1.13/assets/css/artists_list.css b/CodeIgniter-3.1.13/assets/css/artists_list.css index 1a16df7..d28ecf6 100644 --- a/CodeIgniter-3.1.13/assets/css/artists_list.css +++ b/CodeIgniter-3.1.13/assets/css/artists_list.css @@ -132,3 +132,35 @@ body { color: rgb(255, 255, 255); background-color: rgba(84, 15, 202, 0.8); } + +.select-playlist { + padding: 8px 15px; + font-size: 16px; + border: 1px solid #ccc; + border-radius: 4px; + background-color: #f0f0f0; + align-items: baseline; +} + +.select-playlist option { + padding: 8px 15px; + font-size: 16px; + background-color: #fff; + color: #333; +} + +.btn-add-to-playlist { + background-color: #6021aa; + color: white; + padding: 10px 20px; + margin-top: 10px; + border: none; + border-radius: 4px; + cursor: pointer; + transition: background-color 0.3s; + align-items: baseline; +} + +.btn-add-to-playlist:hover { + background-color: #461860; +} diff --git a/CodeIgniter-3.1.13/assets/css/search_results.css b/CodeIgniter-3.1.13/assets/css/search_results.css index 0872cb0..91a1fa1 100644 --- a/CodeIgniter-3.1.13/assets/css/search_results.css +++ b/CodeIgniter-3.1.13/assets/css/search_results.css @@ -149,3 +149,25 @@ body { .pagination .active { background-color: #29043e; } + +.btn-add-to-playlist { + margin-top: 10px; + background-color: #4a0772; + color: #fff; + border: none; + padding: 5px 10px; + cursor: pointer; + border-radius: 3px; +} + +.select-playlist { + margin-top: 10px; + display: block; + padding: 5px; + border: 1px solid #ccc; + border-radius: 3px; +} + +.select-playlist option { + padding: 5px; +}