diff --git a/CodeIgniter-3.1.13/application/controllers/Albums.php b/CodeIgniter-3.1.13/application/controllers/Albums.php index 91a8aea..75414d3 100644 --- a/CodeIgniter-3.1.13/application/controllers/Albums.php +++ b/CodeIgniter-3.1.13/application/controllers/Albums.php @@ -6,6 +6,7 @@ class Albums extends CI_Controller { public function __construct(){ parent::__construct(); $this->load->model('model_music'); + $this->load->library('form_validation'); } public function index(){ $genre = $this->input->get('genre'); @@ -54,5 +55,21 @@ class Albums extends CI_Controller { $this->load->view('layout/footer'); } + public function addAlbumtoPlaylist($id) { + $playlists = $this->model_music->getPlaylist(); + + $this->form_validation->set_rules('playlist_id', 'playlist_id', 'required'); + + if ($this->form_validation->run() == FALSE){ + $this->load->view('layout/header'); + $this->load->view('addAlbumtoplaylist', ["playlists" => $playlists]); + $this->load->view('layout/footer'); + }else{ + $playlistId = $this->input->post('playlist_id'); + $page = $this->input->get('page'); + $this->model_music->AddAlbumtoPlaylist($playlistId,$id); + redirect($page); + } + } } diff --git a/CodeIgniter-3.1.13/application/controllers/Artistes.php b/CodeIgniter-3.1.13/application/controllers/Artistes.php index d71eafb..22ee67c 100644 --- a/CodeIgniter-3.1.13/application/controllers/Artistes.php +++ b/CodeIgniter-3.1.13/application/controllers/Artistes.php @@ -6,6 +6,7 @@ class Artistes extends CI_Controller { public function __construct(){ parent::__construct(); $this->load->model('model_music'); + $this->load->library('form_validation'); } public function index(){ $genre = $this->input->get('genre'); @@ -35,5 +36,21 @@ class Artistes extends CI_Controller { $this->load->view('layout/footer'); } + public function addArtistestoPlaylist($id) { + $playlists = $this->model_music->getPlaylist(); + + $this->form_validation->set_rules('playlist_id', 'playlist_id', 'required'); + + if ($this->form_validation->run() == FALSE){ + $this->load->view('layout/header'); + $this->load->view('addArtistestoplaylist', ["playlists" => $playlists]); + $this->load->view('layout/footer'); + }else{ + $playlistId = $this->input->post('playlist_id'); + $this->model_music->AddArtistestoPlaylist($playlistId,$id); + redirect('artistes'); + } + } + } diff --git a/CodeIgniter-3.1.13/application/controllers/Chansons.php b/CodeIgniter-3.1.13/application/controllers/Chansons.php index e5ce341..1a6fdbf 100644 --- a/CodeIgniter-3.1.13/application/controllers/Chansons.php +++ b/CodeIgniter-3.1.13/application/controllers/Chansons.php @@ -15,21 +15,20 @@ class Chansons extends CI_Controller { $album = $this->input->get('albums'); $sort = $this->input->get('sort'); $order = $this->input->get('order'); + $recherche = $this->input->get('recherche', true); + + if (empty($recherche)) { + $data['chansons'] = $this->model_music->get_filtered_chansons($genre, $artist, $year, $album, $sort, $order); + } else { + $data['chansons'] = $this->model_music->getSearchChansons($recherche); + } - if ($recherche=filter_input(INPUT_GET,'recherche') == false or $recherche=filter_input(INPUT_GET,'recherche') == null){ - $chansons = $this->model_music->get_filtered_chansons($genre, $artist, $year, $album, $sort, $order); - $data['chansons'] = $chansons; - }else{ - $recherche=filter_input(INPUT_GET,'recherche'); - $chansons = $this->model_music->getSearchChansons($recherche); - $data['chansons'] = $chansons; - } $this->load->view('layout/header'); - if ($chansons == false){ + + if ($data['chansons'] == false){ $page = preg_split('/[\/]/',$_SERVER['REQUEST_URI']); $this->load->view('error',['page'=>$page[count($page)-1]]); - $chansons = $this->model_music->get_filtered_chansons($genre, $artist, $year, $album, $sort, $order); - $data['chansons'] = $chansons; + $data['chansons'] = $this->model_music->get_filtered_chansons($genre, $artist, $year, $album, $sort, $order); } $data['genres'] = $this->model_music->get_all_genres_chansons(); $data['artists'] = $this->model_music->get_all_artists_chansons(); diff --git a/CodeIgniter-3.1.13/application/controllers/Playlist.php b/CodeIgniter-3.1.13/application/controllers/Playlist.php index 73e543e..74aee88 100644 --- a/CodeIgniter-3.1.13/application/controllers/Playlist.php +++ b/CodeIgniter-3.1.13/application/controllers/Playlist.php @@ -48,4 +48,30 @@ class Playlist extends CI_Controller { } } + public function duplicatePlaylist($id){ + $this->form_validation->set_rules('name', 'name', 'required'); + + if ($this->form_validation->run() == FALSE){ + $this->load->view('layout/header'); + $this->load->view('create_playlist'); + $this->load->view('layout/footer'); + }else{ + $nom = $this->input->post('name'); + $description = $this->input->post('Description'); + $userId = $this->session->userdata('userId'); + $playlist = array( + 'name'=>$nom, + 'description'=>$description, + 'userId'=>$userId, + ); + $this->model_music->addPlayliste($playlist); + $this->model_music->DuplicatePlaylist($id, $nom); + redirect('playlist'); + } + } + + public function deletePlaylist($id){ + $this->model_music->DeletePlaylist($id); + redirect('playlist'); + } } \ No newline at end of file diff --git a/CodeIgniter-3.1.13/application/models/Model_music.php b/CodeIgniter-3.1.13/application/models/Model_music.php index dbed74a..1020b7d 100644 --- a/CodeIgniter-3.1.13/application/models/Model_music.php +++ b/CodeIgniter-3.1.13/application/models/Model_music.php @@ -4,9 +4,9 @@ class Model_music extends CI_Model { public function __construct(){ $this->load->database(); } - + public function get_filtered_albums($genre = [], $artist = [], $year = [], $sort = null, $order = null) { - $this->db->select('album.name,album.id as albumId,year,artist.name as artistName, genre.name as genreName,jpeg '); + $this->db->select('album.name,album.id as albumId,year,artist.name as artistName, genre.name as genreName,jpeg'); $this->db->from('album'); $this->db->join('genre', 'album.genreId = genre.Id'); $this->db->join('artist', 'album.artistId = artist.Id'); @@ -116,6 +116,31 @@ class Model_music extends CI_Model { $query = $this->db->get(); return $query->result(); } + + public function get_filtered_sorted_chansons($genres = [], $artists = [], $years = [], $albums = [], $sort_column = 'id', $sort_order = 'asc', $limit = 100, $offset = 0) { + $this->db->select('track.id as trackId, song.name,song.id,album.year,album.name as albumName, artist.name as artistName, genre.name as genreName'); + $this->db->from('song'); + $this->db->join('track', 'track.songId = song.id'); + $this->db->join('album', 'album.id = track.albumId'); + $this->db->join('artist', 'album.artistId = artist.Id'); + $this->db->join('genre', 'genre.id = album.genreid'); + + if (!empty($genres)) { + $this->db->where_in('genreName', $genres); + } + if (!empty($artists)) { + $this->db->where_in('artistName', $artists); + } + if (!empty($years)) { + $this->db->where_in('year', $years); + } + if (!empty($albums)) { + $this->db->where_in('albumName', $albums); + } + $this->db->order_by($sort_column, $sort_order); + $this->db->limit($limit, $offset); + return $this->db->get()->result(); + } public function get_all_genres_chansons() { $this->db->distinct(); @@ -314,11 +339,16 @@ class Model_music extends CI_Model { } public function getPlaylistIdSong($id){ + $result = $this->model_music->TrackidSonginPlaylist($id); + + $track = $result->row(); + $trackId = $track->trackId; + $query = $this->db->query( "SELECT Playlist.name, Playlist.playlistid FROM Playlist JOIN PlaylistSong ON Playlist.playlistid = PlaylistSong.playlistid - WHERE PlaylistSong.trackId = $id + WHERE PlaylistSong.trackId = $trackId ORDER BY Playlist.name " ); @@ -338,6 +368,11 @@ class Model_music extends CI_Model { } public function DeleteSongtoPlaylist($idplaylist, $trackId){ + $result = $this->model_music->TrackidSonginPlaylist($trackId); + + $track = $result->row(); + $trackId = $track->trackId; + $tupple = array( "playlistId"=> $idplaylist, "trackId"=> $trackId); @@ -353,23 +388,111 @@ class Model_music extends CI_Model { $this->db->join('album', 'album.id = track.albumId'); $this->db->join('artist', 'album.artistId = artist.Id'); $this->db->join('genre', 'genre.id = album.genreid'); + $this->db->where('PlaylistSong.playlistId', $id); $query = $this->db->get(); return $query->result(); } public function SongInPlaylist($id){ - $query = $this->db->query( - "SELECT PlaylistSong.trackId, Playlist.playlistId - FROM Playlist - JOIN PlaylistSong ON Playlist.playlistid = PlaylistSong.playlistid - WHERE PlaylistSong.trackid = $id - ORDER BY Playlist.name - " - ); - $query->result(); - if ($query->num_rows() > 0){ - return $query = true; + $result = $this->model_music->TrackidSonginPlaylist($id); + + // Si on trouve au moins une piste de cette chanson dans la playlist, retourner true + if ($result->num_rows() > 0) { + return true; } return $query = false; } + + public function TrackidSonginPlaylist($id) { + if (!is_array($id)) { + $id = array($id); + } + + // Étape 1: Récupérer l'ID de la chanson à partir de l'un des IDs de piste fournis + $this->db->select('song.id as songId'); + $this->db->from('track'); + $this->db->join('song', 'song.id = track.songId'); + $this->db->where_in('track.id', $id); + $query = $this->db->get(); + + // Vérifier si des résultats ont été trouvés + if ($query->num_rows() == 0) { + return false; // Si aucun résultat trouvé, retourner false + } + + // Récupérer le premier songId correspondant + $result = $query->row(); + $songId = $result->songId; + + // Étape 2: Récupérer tous les IDs de pistes associés à cette chanson + $this->db->select('track.id as trackId'); + $this->db->from('track'); + $this->db->where('track.songId', $songId); + $query = $this->db->get(); + $trackIds = array(); + foreach ($query->result() as $track) { + $trackIds[] = $track->trackId; + } + + // Étape 3: Vérifier si l'une des pistes de cette chanson est dans la playlist + $this->db->select('PlaylistSong.trackid as trackId'); + $this->db->from('PlaylistSong'); + $this->db->where_in('PlaylistSong.trackid', $trackIds); + $query = $this->db->get(); + return $query; + } + + public function AddAlbumtoPlaylist($idplaylist, $albumId){ + $this->db->select('track.id as trackId'); + $this->db->from('album'); + $this->db->join('track', 'album.id = track.albumId'); + $this->db->where('track.albumId', $albumId); + $query = $this->db->get(); + foreach($query->result() as $tab){ + if($this->model_music->SongInPlaylist($tab->trackId) == false){ + $this->model_music->AddSongtoPlaylist($idplaylist,$tab->trackId); + } + } + } + + public function AddArtistestoPlaylist($idplaylist, $artisteId){ + $this->db->select('track.id as trackId'); + $this->db->from('artist'); + $this->db->join('album', 'album.artistId=artist.id'); + $this->db->join('track', 'album.id = track.albumId'); + $this->db->where('artist.id', $artisteId); + $query = $this->db->get(); + foreach($query->result() as $tab){ + if($this->model_music->SongInPlaylist($tab->trackId) == false){ + $this->model_music->AddSongtoPlaylist($idplaylist,$tab->trackId); + } + } + } + + public function DuplicatePlaylist($idplaylist,$nomplaylist){ + $this->db->select('Playlist.playlistId'); + $this->db->from('Playlist'); + $this->db->where('name', $nomplaylist); + $query = $this->db->get(); + $result = $query->row(); + $id = $result->playlistId; + print_r($id); + + $this->db->select('PlaylistSong.trackId'); + $this->db->from('PlaylistSong'); + $this->db->where('PlaylistSong.playlistId', $idplaylist); + $query = $this->db->get(); + foreach($query->result() as $row){ + print_r($row->trackId); + $this->model_music->AddSongtoPlaylist($id,$row->trackId); + } + } + + public function DeletePlaylist($idplaylist){ + $this->db->where('playlistId',$idplaylist); + $this->db->delete("PlaylistSong"); + + $this->db->where('playlistId',$idplaylist); + $this->db->delete("Playlist"); + } } diff --git a/CodeIgniter-3.1.13/application/views/addAlbumtoplaylist.php b/CodeIgniter-3.1.13/application/views/addAlbumtoplaylist.php new file mode 100644 index 0000000..51d6bee --- /dev/null +++ b/CodeIgniter-3.1.13/application/views/addAlbumtoplaylist.php @@ -0,0 +1,25 @@ +