From 780d736b53930bbb1156b86b885549636261cf65 Mon Sep 17 00:00:00 2001
From: follea <thomas.follea@gmail.com>
Date: Wed, 19 Jun 2024 14:55:39 +0200
Subject: [PATCH] Finalisation des bugs

---
 .../controllers/ConnexionController.php       |  2 +
 .../controllers/InscriptionController.php     | 48 --------------
 .../application/controllers/Playlist.php      | 56 +++++++----------
 .../application/models/Model_music.php        | 63 +++++++++++++------
 .../application/views/playlist_generate.php   |  2 +-
 5 files changed, 71 insertions(+), 100 deletions(-)
 delete mode 100644 codeigniter/application/controllers/InscriptionController.php

diff --git a/codeigniter/application/controllers/ConnexionController.php b/codeigniter/application/controllers/ConnexionController.php
index 4f1226b..7d6d948 100644
--- a/codeigniter/application/controllers/ConnexionController.php
+++ b/codeigniter/application/controllers/ConnexionController.php
@@ -19,11 +19,13 @@ class ConnexionController extends CI_Controller {
         if ($_SERVER["REQUEST_METHOD"] == "POST") {
             $email = $_POST['email'];
             $password = $_POST['password'];
+            
             if (!empty($email) && !empty($password)) {
                 $this->load->database();
                 // Utilisation d'une requête préparée pour éviter les injections SQL
                 $query = $this->db->query("SELECT * FROM users WHERE email = ?", array($email));
                 $result = $query->row(); // Récupérer la première ligne de résultat
+                
                 if ($result) { // Vérifier si l'utilisateur existe
                     if (password_verify($password, $result->mdp)) { // Vérifier si le mot de passe est correct
                         $this->session->set_userdata('user_id', $result->id);
diff --git a/codeigniter/application/controllers/InscriptionController.php b/codeigniter/application/controllers/InscriptionController.php
deleted file mode 100644
index b112768..0000000
--- a/codeigniter/application/controllers/InscriptionController.php
+++ /dev/null
@@ -1,48 +0,0 @@
-<?php
-defined('BASEPATH') OR exit('No direct script access allowed');
-
-class InscriptionController extends CI_Controller {
-
-    public function __construct() {
-        parent::__construct();
-        $this->load->helper(array('url', 'html'));
-    }
-
-    public function inscription() {
-        $this->load->view('layout/header');
-        $this->load->view('connexion');
-        $this->load->view('layout/footer');
-    }
-
-    public function traitement() {
-        if(isset($_POST['ok'])){
-            $this->load->database();
-    
-
-            $prenom = ucfirst(strtolower($this->input->post('prenom')));
-            $nom = strtoupper($this->input->post('nom'));
-            $pseudo = $this->input->post('pseudo');
-            $mdp = $this->input->post('pass');
-            $mdpcrypte = password_hash($mdp, PASSWORD_DEFAULT);
-            $email = $this->input->post('email');
-    
-            $data = array(
-                'pseudo' => $pseudo,
-                'nom' => $nom,
-                'prenom' => $prenom,
-                'mdp' => $mdpcrypte,
-                'email' => $email
-            );
-    
-            $this->db->insert('users', $data);
-    
-            $data['confirmation_message'] = "Inscription réussie ! Vous êtes maintenant inscrit.";
-
-            $this->load->view('layout/header');
-            $this->load->view('connexion', $data);
-            $this->load->view('layout/footer');
-        }
-    }
-    
-
-}
diff --git a/codeigniter/application/controllers/Playlist.php b/codeigniter/application/controllers/Playlist.php
index 1379960..a877cfa 100644
--- a/codeigniter/application/controllers/Playlist.php
+++ b/codeigniter/application/controllers/Playlist.php
@@ -9,14 +9,14 @@ class Playlist extends CI_Controller {
         $this->load->helper('html');
         $this->load->helper('url');
         $this->load->helper('form');
+        if (!$this->session->userdata('user_id')) {
+            redirect('connexion');
+        }
     }
 
     public function index(){
 
-        if (!$this->session->userdata('user_id')) {
-            // Redirigez vers la page de connexion
-            redirect('connexion');
-        }
+        
         $userId = $this->session->userdata('user_id');
         $playlists = $this->model_music->getPlaylistsByUser($userId);
         $this->load->view('layout/header');
@@ -53,23 +53,24 @@ class Playlist extends CI_Controller {
     }
 
     public function view($id) {
-
-        if (!$this->session->userdata('user_id')) {
-            // Redirigez vers la page de connexion
-            redirect('connexion');
-        }
-        $songs = $this->model_music->getSongsByPlaylist($id);
-        $playlist = $this->model_music->getPlaylistById($id);
-        if ($playlist) {
-            $data['playlistName'] = $playlist->name; // Passez le nom de la playlist à la vue
-            $data['songs'] = $songs;
-            $data['playlistId'] = $id;
-            $this->load->view('layout/header');
-            $this->load->view('playlist_view', $data);
-            $this->load->view('layout/footer');
-        } else {
-            echo "Playlist non trouvée.";
+        if($this->model_music->playlistOfUser($id)){
+            $songs = $this->model_music->getSongsByPlaylist($id);
+            $playlist = $this->model_music->getPlaylistById($id);
+            if ($playlist) {
+                $data['playlistName'] = $playlist->name; 
+                $data['songs'] = $songs;
+                $data['playlistId'] = $id;
+                $this->load->view('layout/header');
+                $this->load->view('playlist_view', $data);
+                $this->load->view('layout/footer');
+            } else {
+                echo "Playlist non trouvée.";
+            }
+        }else{
+            redirect('albums');
         }
+        
+        
     }
 
     public function add_song(){
@@ -98,10 +99,7 @@ class Playlist extends CI_Controller {
     }
 
     public function choose_playlist($songId) {
-        if (!$this->session->userdata('user_id')) {
-            // Redirigez vers la page de connexion
-            redirect('connexion');
-        }
+       
     $playlists = $this->model_music->getPlaylistsByUser($this->session->userdata('user_id'));
     $this->load->view('layout/header');
     $this->load->view('choose_playlist', ['playlists' => $playlists, 'songId' => $songId]);
@@ -110,10 +108,7 @@ class Playlist extends CI_Controller {
 
 
 public function choix_playlist($albumId) {
-    if (!$this->session->userdata('user_id')) {
-        // Redirigez vers la page de connexion
-        redirect('connexion');
-    }
+    
     $playlists = $this->model_music->getPlaylistsByUser($this->session->userdata('user_id'));
     $this->load->view('layout/header');
     $this->load->view('choix_playlist', ['playlists' => $playlists, 'albumId' => $albumId]);
@@ -142,10 +137,7 @@ public function choix_playlist($albumId) {
     }
 
     public function generate(){
-        if (!$this->session->userdata('user_id')) {
-            // Redirigez vers la page de connexion
-            redirect('connexion');
-        }
+        
         $this->load->view('layout/header');
         $this->load->view('playlist_generate');
         $this->load->view('layout/footer');
diff --git a/codeigniter/application/models/Model_music.php b/codeigniter/application/models/Model_music.php
index ab1d288..0e3d549 100644
--- a/codeigniter/application/models/Model_music.php
+++ b/codeigniter/application/models/Model_music.php
@@ -100,28 +100,53 @@ class Model_music extends CI_Model {
 		$query = $this->db->query("SELECT * FROM genre");
 		return $query->result();
 	}
-	
-    public function searchAlbums($query, $genre){
-        $sql = "SELECT album.name, album.id, 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 ? OR artist.name LIKE ?
-            ORDER BY album.id ASC";
-    
-        // Paramètres pour les conditions de recherche
-        $params = ["%{$query}%", "%{$query}%"];
-        
-        if (!empty($genre)) {
-            $sql .= " AND genre.id = ?";
-            $params[] = $genre;
-        }
 
-        $query = $this->db->query($sql, $params);
+
+    public function playlistOfUser($id){
+        $user_id = $this->session->userdata('user_id');
+        $this->db->select('id');
+        
+        $this->db->from('playlist');
+        $this->db->where('userId', $user_id);
+        $this->db->where('id', $id);
+
+        $query = $this->db->get();
+
+        return $query->num_rows() > 0;
+    }
+
+
+	
+    public function searchAlbums($query, $genre) {
+        // Sélection des colonnes
+        $this->db->select('album.name, album.id, year, artist.name as artistName, genre.name as genreName, jpeg');
+        
+        // Tables et jointures
+        $this->db->from('album');
+        $this->db->join('artist', 'album.artistid = artist.id');
+        $this->db->join('genre', 'genre.id = album.genreid');
+        $this->db->join('cover', 'cover.id = album.coverid');
+        
+        // Conditions de recherche
+        $this->db->group_start();
+        $this->db->like('album.name', $query);
+        $this->db->or_like('artist.name', $query);
+        $this->db->group_end();
+        
+        // Condition supplémentaire par genre si spécifié
+        if (!empty($genre)) {
+            $this->db->where('genre.id', $genre);
+        }
+        
+        // Tri par défaut
+        $this->db->order_by('album.id', 'ASC');
+        
+        // Exécution de la requête
+        $query = $this->db->get();
+        
+        // Renvoi des résultats
         return $query->result();
     }
-    
 
     public function createPlaylist($name, $userId) {
         $data = array(
diff --git a/codeigniter/application/views/playlist_generate.php b/codeigniter/application/views/playlist_generate.php
index 587fd2e..5369f9b 100644
--- a/codeigniter/application/views/playlist_generate.php
+++ b/codeigniter/application/views/playlist_generate.php
@@ -2,7 +2,7 @@
 
 <form action="<?= site_url('playlist/generate_random'); ?>" method="post" class="generate-playlist-form">
     <input type="text" name="playlistName" placeholder="Nom de la playlist" required>
-    <input type="number" name="numSongs" placeholder="Nombre de chansons" required>
+    <input type="number" min="0" max="1000" name="numSongs" placeholder="Nombre de chansons" required>
     <button type="submit">Générer</button>
 </form>