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->from('album'); $this->db->join('genre', 'album.genreId = genre.Id'); $this->db->join('artist', 'album.artistId = artist.Id'); $this->db->join('cover', 'album.coverId = cover.Id'); if (!empty($genre)) { $this->db->where_in('genre.name', $genre); } if (!empty($artist)) { $this->db->where_in('artist.name', $artist); } if (!empty($year)) { $this->db->where_in('album.year', $year); } if ($sort && in_array($sort, ['year', 'artistName', 'name', 'genreName'])) { $this->db->order_by($sort, $order); } $query = $this->db->get(); return $query->result(); } public function get_all_genres() { $this->db->distinct(); $this->db->select('genreId,genre.name as genreName'); $this->db->from('album'); $this->db->join('genre', 'album.genreId = genre.Id'); $query = $this->db->get(); return $query->result(); } public function get_all_artists() { $this->db->distinct(); $this->db->select('artistId,artist.name as artistName'); $this->db->from('album'); $this->db->join('artist', 'album.artistId = artist.Id'); $query = $this->db->get(); return $query->result(); } public function get_all_years() { $this->db->distinct(); $this->db->select('year'); $query = $this->db->get('album'); return $query->result(); } public function getArtistes(){ $query = $this->db->query( "SELECT artist.name, artist.id FROM artist ORDER BY artist.name " ); return $query->result(); } public function get_filtered_artistes($genre = [], $sort = null, $order = null) { $this->db->distinct(); $this->db->select('artist.Id,artist.name, genre.name as genreName'); $this->db->from('artist'); $this->db->join('album', 'album.artistId = artist.Id'); $this->db->join('genre', 'album.genreId = genre.Id'); if (!empty($genre)) { $this->db->where_in('genre.name', $genre); } if ($sort && in_array($sort, ['name'])) { $this->db->order_by($sort, $order); } $query = $this->db->get(); return $query->result(); } public function get_all_genres_artistes() { $this->db->distinct(); $this->db->select('genreId,genre.name as genreName'); $this->db->from('artist'); $this->db->join('album', 'album.artistId = artist.Id'); $this->db->join('genre', 'album.genreId = genre.Id'); $query = $this->db->get(); return $query->result(); } public function get_filtered_chansons($genre = [], $artist = [], $year = [], $album = [], $sort = null, $order = null) { $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($genre)) { $this->db->where_in('genre.name', $genre); } if (!empty($artist)) { $this->db->where_in('artist.name', $artist); } if (!empty($year)) { $this->db->where_in('album.year', $year); } if (!empty($album)) { $this->db->where_in('album.name', $album); } if ($sort && in_array($sort, ['year', 'artistName', 'name', 'albumName', 'genreName'])) { $this->db->order_by($sort, $order); } $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(); $this->db->select('genreId,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('genre', 'album.genreId = genre.Id'); $query = $this->db->get(); return $query->result(); } public function get_all_artists_chansons() { $this->db->distinct(); $this->db->select('artistId,artist.name as artistName'); $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'); $query = $this->db->get(); return $query->result(); } public function get_all_years_chansons() { $this->db->distinct(); $this->db->select('year'); $this->db->from('song'); $this->db->join('track', 'track.songId = song.id'); $this->db->join('album', 'album.id = track.albumId'); $query = $this->db->get(); return $query->result(); } public function get_all_albums_chansons() { $this->db->distinct(); $this->db->select('album.Id,album.name as albumName'); $this->db->from('song'); $this->db->join('track', 'track.songId = song.id'); $this->db->join('album', 'album.id = track.albumId'); $query = $this->db->get(); return $query->result(); } public function getSearchAlbums($nom){ $query = $this->db->query( "SELECT album.name,album.id as albumId,year,artist.name as artistName, genre.name as genreName,jpeg FROM album JOIN artist ON album.artistid = artist.id JOIN genre ON genre.id = album.genreid JOIN cover ON cover.id = album.coverid WHERE album.name LIKE '$nom' " ); //$query->result(); if ($query->num_rows() > 0){ return $query->result(); } return $query = false; } public function getSearchArtistes($nom){ $query = $this->db->query( "SELECT artist.name, artist.id FROM artist WHERE artist.name LIKE '$nom' " ); $query->result(); if ($query->num_rows() > 0){ return $query->result(); } return $query = false; } public function getSearchChansons($nom){ $query = $this->db->query( "SELECT track.id as trackId,song.name,song.id,album.year,album.name as albumName, artist.name as artistName, genre.name as genreName FROM song JOIN track ON track.songId = song.id JOIN album ON album.id = track.albumId JOIN artist ON album.artistid = artist.id JOIN genre ON genre.id = album.genreid WHERE song.name LIKE '$nom' " ); $query->result(); if ($query->num_rows() > 0){ return $query->result(); } return $query = false; } public function getAlbumChoose($id) { $this->db->where('id', $id); $query = $this->db->get('album'); $album = $query->row(); // Recupere la couverture $this->db->where('id', $album->coverId); $coverQuery = $this->db->get('cover'); $cover = $coverQuery->row(); $album->coverImage = $cover->jpeg; // Recupere le l'id de la musique a partie de l'album $this->db->select('songId'); $this->db->where('albumId', $id); $songsQuery = $this->db->get('track'); $songIds = $songsQuery->result(); // Récupérer les noms des chansons à partir des songIds $album->songs = []; foreach ($songIds as $song) { $this->db->select('name'); $this->db->where('id', $song->songId); $songQuery = $this->db->get('song'); $songData = $songQuery->row(); $album->songs[] = $songData->name; } $album->tracks = []; foreach ($songIds as $song) { $this->db->select('song.name as songName, track.duration, track.Id as trackId'); $this->db->from('track'); $this->db->join('song', 'track.songId = song.id'); $this->db->where('track.songId', $song->songId); $trackQuery = $this->db->get(); $trackData = $trackQuery->row(); $album->tracks[] = $trackData; } $this->db->where('id', $album->artistId); $artistQuery = $this->db->get('artist'); $artist = $artistQuery->row(); $album->artist = $artist; $this->db->where('id', $album->artistId); $artistQuery = $this->db->get('artist'); $artist = $artistQuery->row(); $album->artist = $artist; return $album; } public function getAlbumsByArtistId($artistId) { $query = $this->db->query( "SELECT album.name,album.id as albumId,year,artist.name as artistName, genre.name as genreName,jpeg FROM album JOIN artist ON album.artistid = artist.id JOIN genre ON genre.id = album.genreid JOIN cover ON cover.id = album.coverid WHERE album.artistid=$artistId ORDER BY year " ); return $query->result(); } public function create_user($user){ $this->db->insert("User",$user); return $this->db->insert_id(); } public function get_user_by_email($email){ $this->db->select("userId,usernom,userprenom,usermail,userpassword"); $this->db->from("User"); $this->db->where("usermail",$email); $query = $this->db->get(); return $query->row(); } public function getPlaylist(){ $query = $this->db->query( "SELECT Playlist.name, Playlist.playlistid FROM Playlist ORDER BY Playlist.name " ); return $query->result(); } public function getSearchPlaylist($nom){ $query = $this->db->query( "SELECT Playlist.name, Playlist.playlistid FROM Playlist WHERE Playlist.name LIKE '$nom' " ); $query->result(); if ($query->num_rows() > 0){ return $query->result(); } return $query = false; } 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 = $trackId ORDER BY Playlist.name " ); return $query->result(); } public function addPlayliste($playlist){ $this->db->insert("Playlist",$playlist); return $this->db->insert_id(); } public function AddSongtoPlaylist($idplaylist, $trackId){ $tupple = array( "playlistId"=> $idplaylist, "trackId"=> $trackId); $this->db->insert("PlaylistSong",$tupple); } public function DeleteSongtoPlaylist($idplaylist, $trackId){ $result = $this->model_music->TrackidSonginPlaylist($trackId); $track = $result->row(); $trackId = $track->trackId; $tupple = array( "playlistId"=> $idplaylist, "trackId"=> $trackId); $this->db->delete("PlaylistSong",$tupple); } public function get_song_playlist($id){ $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('Playlist'); $this->db->join('PlaylistSong', 'PlaylistSong.playlistid = Playlist.playlistid'); $this->db->join('track', 'PlaylistSong.trackid = track.id'); $this->db->join('song', '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'); $this->db->where('PlaylistSong.playlistId', $id); $query = $this->db->get(); return $query->result(); } public function SongInPlaylist($id){ $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"); } }