From 4095bea242d03576b23f8d94f2c87e94d91c6ace Mon Sep 17 00:00:00 2001 From: stiti Date: Thu, 30 May 2024 15:07:02 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20de=20la=20possibilit=C3=A9=20de=20rendr?= =?UTF-8?q?e=20une=20playlist=20priv=C3=A9e=20ou=20publique?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../application/controllers/Playlists.php | 59 ++++++---- .../application/models/Model_playlist.php | 14 ++- .../application/views/playlist_view.php | 101 ++++++++++-------- .../application/views/playlists_list.php | 91 ++++++++++------ 4 files changed, 169 insertions(+), 96 deletions(-) diff --git a/CodeIgniter-3.1.13/application/controllers/Playlists.php b/CodeIgniter-3.1.13/application/controllers/Playlists.php index fdb714c..c88f0c9 100644 --- a/CodeIgniter-3.1.13/application/controllers/Playlists.php +++ b/CodeIgniter-3.1.13/application/controllers/Playlists.php @@ -15,22 +15,27 @@ class Playlists extends CI_Controller { public function index(){ // Récupérer l'ID de l'utilisateur connecté depuis la session $user_id = $this->session->userdata('user_id'); - + // Vérifier si l'utilisateur est connecté if ($user_id) { + // Récupérer les playlists de l'utilisateur connecté $data['playlists'] = $this->Model_playlist->get_user_playlists($user_id); - + + // Récupérer les playlists publiques + $data['public_playlists'] = $this->Model_playlist->get_public_playlists($user_id); + $data['title']="Liste des Playlists - Onzeur"; $data['css']="assets/css/playlists_list.css"; - + $this->load->view('layout/header_dark', $data); - $this->load->view('playlists_list',$data); + $this->load->view('playlists_list', $data); $this->load->view('layout/footer_dark'); } else { redirect('utilisateur/connexion'); } } + public function verify_playlist_ownership($playlist_id) { // Vérifier si l'utilisateur est connecté if (!$this->session->userdata('user_id')) { @@ -63,7 +68,8 @@ class Playlists extends CI_Controller { $data = array( 'name' => $this->input->post('name'), 'description' => $this->input->post('description'), - 'utilisateur_id' => $user_id // Ajoutez l'ID de l'utilisateur + 'utilisateur_id' => $user_id, // Ajoutez l'ID de l'utilisateur + 'public' => $this->input->post('public') ? 1 : 0 // Champ pour définir si la playlist est publique ou privée ); $this->Model_playlist->create_playlist($data); redirect('playlists'); @@ -73,10 +79,10 @@ class Playlists extends CI_Controller { redirect('utilisateur/connexion'); } } else { - + $data['title']="Créer une Nouvelle Playlist"; $data['css']="assets/css/playlist_create"; - + $this->load->view('layout/header_dark', $data); $this->load->view('playlist_create'); $this->load->view('layout/footer_dark'); @@ -84,7 +90,7 @@ class Playlists extends CI_Controller { } public function update($playlist_id) { - // Vérifier si l'utilisateur est connecté + // Vérifier si l'utilisateur est connecté et s'il est propriétaire de la playlist $this->verify_playlist_ownership($playlist_id); // Récupérer l'ID de l'utilisateur connecté @@ -101,7 +107,8 @@ class Playlists extends CI_Controller { if ($this->input->post()) { $data = array( 'name' => $this->input->post('name'), - 'description' => $this->input->post('description') + 'description' => $this->input->post('description'), + 'public' => $this->input->post('public') ? 1 : 0 // Mise à jour de la visibilité ); $this->Model_playlist->update_playlist($playlist_id, $data); redirect('playlists/view/' . $playlist_id); @@ -109,7 +116,7 @@ class Playlists extends CI_Controller { // Gérer le cas où les données POST ne sont pas disponibles redirect('playlists/view/' . $playlist_id); } - } + } public function add_song($playlist_id) { $this->verify_playlist_ownership($playlist_id); @@ -253,25 +260,39 @@ class Playlists extends CI_Controller { } public function view($playlist_id) { - $this->verify_playlist_ownership($playlist_id); - + // Vérifiez si la playlist est accessible à l'utilisateur actuellement connecté + $this->verify_playlist_accessibility($playlist_id); + // Charger les détails de la playlist spécifique en fonction de son ID $data['playlist'] = $this->Model_playlist->get_playlist_by_id($playlist_id); - + // Charger les chansons de la playlist spécifique $data['songs'] = $this->Model_playlist->get_songs_by_playlist($playlist_id); - - - $data['title']="Détails de la Playlist - Onzeur"; - $data['css']="assets/css/playlist_view"; - - + + $data['title'] = "Détails de la Playlist - Onzeur"; + $data['css'] = "assets/css/playlist_view"; + // Charger la vue pour afficher les détails de la playlist $this->load->view('layout/header_dark', $data); $this->load->view('playlist_view', $data); $this->load->view('layout/footer_dark'); } + private function verify_playlist_accessibility($playlist_id) { + // Récupérer l'ID de l'utilisateur connecté + $user_id = $this->session->userdata('user_id'); + + // Récupérer les détails de la playlist + $playlist = $this->Model_playlist->get_playlist_by_id($playlist_id); + + // Vérifier si la playlist existe et si elle est publique + if (!$playlist || ($playlist->public == 0 && $playlist->utilisateur_id !== $user_id)) { + // Rediriger vers une page d'erreur ou une page appropriée + redirect('erreur/page_non_autorisee'); + } + } + + public function add_artist($playlist_id) { $this->verify_playlist_ownership($playlist_id); diff --git a/CodeIgniter-3.1.13/application/models/Model_playlist.php b/CodeIgniter-3.1.13/application/models/Model_playlist.php index 9f618a1..6313011 100644 --- a/CodeIgniter-3.1.13/application/models/Model_playlist.php +++ b/CodeIgniter-3.1.13/application/models/Model_playlist.php @@ -8,10 +8,11 @@ class Model_playlist extends CI_Model { } public function create_playlist($data) { - // Récupérer l'ID de l'utilisateur à partir de la session $user_id = $this->session->userdata('user_id'); if ($user_id !== null) { $data['utilisateur_id'] = $user_id; + // Définir la visibilité par défaut + $data['public'] = 0; // Playlist privée par défaut return $this->db->insert('playlist', $data); } else { return false; @@ -26,10 +27,11 @@ class Model_playlist extends CI_Model { // Récupérer toutes les playlists d'un utilisateur spécifique public function get_user_playlists($user_id) { $this->db->where('utilisateur_id', $user_id); + // Ne récupérer que les playlists publiques ou celles appartenant à l'utilisateur + $this->db->where('(public = 1 OR utilisateur_id = ' . $user_id . ')'); return $this->db->get('playlist')->result(); } - // Mettre à jour une playlist public function update_playlist($playlist_id, $data) { $this->db->where('id', $playlist_id); @@ -115,5 +117,13 @@ class Model_playlist extends CI_Model { public function add_album_to_playlist($data) { return $this->db->insert('playlist_album', $data); } + + public function get_public_playlists($user_id) { + // Récupérer les playlists publiques en excluant celles de l'utilisateur connecté + $this->db->where('utilisateur_id !=', $user_id); + $this->db->where('public', 1); + return $this->db->get('playlist')->result(); + } + } ?> diff --git a/CodeIgniter-3.1.13/application/views/playlist_view.php b/CodeIgniter-3.1.13/application/views/playlist_view.php index 654e67e..9cf6b1c 100644 --- a/CodeIgniter-3.1.13/application/views/playlist_view.php +++ b/CodeIgniter-3.1.13/application/views/playlist_view.php @@ -1,18 +1,20 @@ -
- - session->flashdata('success')): ?> -
- session->flashdata('success'); ?> -
- +
+ + session->flashdata('success')): ?> +
+ session->flashdata('success'); ?> +
+ - session->flashdata('error')): ?> -
- session->flashdata('error'); ?> -
- + session->flashdata('error')): ?> +
+ session->flashdata('error'); ?> +
+ -

name, ENT_QUOTES, 'UTF-8'); ?>

+

name, ENT_QUOTES, 'UTF-8'); ?>

+ + session->userdata('user_id') === $playlist->utilisateur_id): ?>
@@ -22,45 +24,58 @@
+
+ + +
+ -

Chansons

- - - - - - +

Chansons

+
TitreArtisteÉcouter sur
+ + + + + + session->userdata('user_id') === $playlist->utilisateur_id): ?> - - - - - - - - + + + + + + + + + + session->userdata('user_id') === $playlist->utilisateur_id): ?> - - - - - + - - -
TitreArtisteÉcouter surActions
name, ENT_QUOTES, 'UTF-8'); ?>artist_name, ENT_QUOTES, 'UTF-8'); ?> - Spotify | - Deezer | - YouTube -
name, ENT_QUOTES, 'UTF-8'); ?>artist_name, ENT_QUOTES, 'UTF-8'); ?> + Spotify | + Deezer | + YouTube + Supprimer
Aucune chanson trouvée dans cette playlist.
+ + + + Aucune chanson trouvée dans cette playlist. + + + + + session->userdata('user_id') === $playlist->utilisateur_id): ?> Ajouter une musique Ajouter un album Ajouter les musiques d'un artiste - Retour -
- \ No newline at end of file + + Retour +
diff --git a/CodeIgniter-3.1.13/application/views/playlists_list.php b/CodeIgniter-3.1.13/application/views/playlists_list.php index cf1e5fa..96cfc66 100644 --- a/CodeIgniter-3.1.13/application/views/playlists_list.php +++ b/CodeIgniter-3.1.13/application/views/playlists_list.php @@ -1,34 +1,61 @@ -
-

Liste des Playlists

- Créer une Nouvelle Playlist - Générer une playlist aléatoire - - - - - - - - - - - - - - - - - - +
NomDescriptionActions
name, ENT_QUOTES, 'UTF-8'); ?>description, ENT_QUOTES, 'UTF-8'); ?> - Voir - Supprimer - Dupliquer -
+ + + + + + + + + + - + + + - - -
NomDescriptionActions
Aucune playlist trouvée.name, ENT_QUOTES, 'UTF-8'); ?>description, ENT_QUOTES, 'UTF-8'); ?> + Voir + Supprimer + Dupliquer +
-
- \ No newline at end of file + + + + Aucune playlist trouvée. + + + + + +


Playlists Publiques

+ + + + + + + + + + + + + + + + + + + + + + + +
NomDescriptionActions
name, ENT_QUOTES, 'UTF-8'); ?>description, ENT_QUOTES, 'UTF-8'); ?> + Voir +
Aucune playlist publique trouvée.
+