diff --git a/application/controllers/Artistes.php b/application/controllers/Artistes.php index 28b8429..2c598a6 100644 --- a/application/controllers/Artistes.php +++ b/application/controllers/Artistes.php @@ -7,6 +7,7 @@ class Artistes extends CI_Controller { $this->load->model('Model_artist'); $this->load->model('Model_music'); $this->load->library('pagination'); + $this->load->library('session'); } public function index() { @@ -19,24 +20,39 @@ class Artistes extends CI_Controller { $config['base_url'] = site_url('artistes'); $config['total_rows'] = $this->Model_artist->get_total_artists($genre, $query); $config['per_page'] = 16; // Nombre d'artistes par page - $config['uri_segment'] = 2; // Segment de l'URI contenant le numéro de la page + $config['page_query_string'] = TRUE; $config['reuse_query_string'] = TRUE; + $config['query_string_segment'] = 'page'; + $config['full_tag_open'] = '<nav aria-label="Page navigation"><ul class="pagination">'; + $config['full_tag_close'] = '</ul></nav>'; + $config['first_link'] = 'First'; + $config['last_link'] = 'Last'; + $config['first_tag_open'] = '<li class="page-item">'; + $config['first_tag_close'] = '</li>'; + $config['prev_link'] = '«'; + $config['prev_tag_open'] = '<li class="page-item">'; + $config['prev_tag_close'] = '</li>'; + $config['next_link'] = '»'; + $config['next_tag_open'] = '<li class="page-item">'; + $config['next_tag_close'] = '</li>'; + $config['last_tag_open'] = '<li class="page-item">'; + $config['last_tag_close'] = '</li>'; + $config['cur_tag_open'] = '<li class="page-item active"><a href="#" class="page-link">'; + $config['cur_tag_close'] = '</a></li>'; + $config['num_tag_open'] = '<li class="page-item">'; + $config['num_tag_close'] = '</li>'; + $config['attributes'] = array('class' => 'page-link'); $this->pagination->initialize($config); - $page = ($this->uri->segment(2)) ? $this->uri->segment(2) : 0; - - // Correction pour éviter l'erreur str_replace() - $pagination_links = $this->pagination->create_links(); - if ($pagination_links === null) { - $pagination_links = ''; - } + $page = $this->input->get('page'); + $page = ($page) ? $page : 0; $data = array( 'artists' => $this->Model_artist->getArtists($genre, $order, $query, $config['per_page'], $page), 'genres' => $this->Model_music->researchtype(), - 'pagination' => $pagination_links, - 'is_logged_in' => $this->session->userdata('logged_in') + 'is_logged_in' => $this->session->userdata('logged_in'), + 'pagination' => $this->pagination->create_links() ); $this->load->view('layout/header', $data); @@ -45,8 +61,6 @@ class Artistes extends CI_Controller { $this->load->view('layout/footer'); } - - public function view($artistId) { $artistDetails = $this->Model_artist->getArtistDetails($artistId); @@ -66,5 +80,5 @@ class Artistes extends CI_Controller { $this->load->view('artist_details', $data); $this->load->view('layout/footer'); } - } +?> diff --git a/application/controllers/Connect.php b/application/controllers/Connect.php index 1b80787..c5ddea6 100644 --- a/application/controllers/Connect.php +++ b/application/controllers/Connect.php @@ -11,36 +11,45 @@ class Connect extends CI_Controller { $this->load->helper(['url', 'form']); } - public function create() - { + public function create() { $this->form_validation->set_rules('nom', 'Nom', 'required'); $this->form_validation->set_rules('prenom', 'Prénom', 'required'); $this->form_validation->set_rules('email', 'Adresse mail', 'valid_email|required'); $this->form_validation->set_rules('password', 'Password', 'min_length[5]|required'); $this->form_validation->set_rules('cpassword', 'Confirmation Password', 'required|matches[password]'); - + if ($this->form_validation->run() === FALSE) { $this->load->view('layout/header'); $this->load->view('create'); $this->load->view('layout/footer'); } else { - $data = array( - 'nom' => $this->input->post('nom'), - 'prenom' => $this->input->post('prenom'), - 'email' => $this->input->post('email'), - 'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT) - ); - - if ($this->User_model->create_user($data)) { - redirect('connect/login'); - } else { - $data['error'] = 'Erreur lors de la création du compte. Veuillez réessayer.'; + $email = $this->input->post('email'); + if ($this->User_model->emailExists($email)) { + $data['error'] = 'L\'adresse email est déjà utilisée.'; $this->load->view('layout/header'); $this->load->view('create', $data); $this->load->view('layout/footer'); + } else { + $data = array( + 'nom' => $this->input->post('nom'), + 'prenom' => $this->input->post('prenom'), + 'email' => $this->input->post('email'), + 'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT) + ); + + if ($this->User_model->create_user($data)) { + redirect('connect/login'); + } else { + $data['error'] = 'Erreur lors de la création du compte. Veuillez réessayer.'; + $this->load->view('layout/header'); + $this->load->view('create', $data); + $this->load->view('layout/footer'); + } } } } + + public function login() { diff --git a/application/controllers/Playlist.php b/application/controllers/Playlist.php index 814cd20..7c720d7 100644 --- a/application/controllers/Playlist.php +++ b/application/controllers/Playlist.php @@ -26,9 +26,11 @@ class Playlist extends CI_Controller { } public function add() { - $is_logged_in = $this->session->userdata('logged_in'); - $user_email = $this->session->userdata('email'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } + $user_email = $this->session->userdata('email'); $name = $this->input->post('name'); $type = $this->input->post('type'); $numSongs = $this->input->post('numSongs'); @@ -55,13 +57,16 @@ class Playlist extends CI_Controller { } public function selectPlaylist() { - $is_logged_in = $this->session->userdata('logged_in'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } + $itemId = $this->input->post('itemId'); $itemType = $this->input->post('itemType'); $playlists = $this->Model_playlist->getPlaylistsByUser($this->session->userdata('email')); $data = array( - 'is_logged_in' => $is_logged_in, + 'is_logged_in' => $this->session->userdata('logged_in'), 'itemId' => $itemId, 'itemType' => $itemType, 'playlists' => $playlists @@ -73,6 +78,10 @@ class Playlist extends CI_Controller { } public function addItems() { + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } + $playlistId = $this->input->post('playlistId'); $itemId = $this->input->post('itemId'); $itemType = $this->input->post('itemType'); @@ -98,12 +107,15 @@ class Playlist extends CI_Controller { } public function view($playlistId) { - $is_logged_in = $this->session->userdata('logged_in'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } + $items = $this->Model_playlist->getPlaylistItems($playlistId); $itemCount = $this->Model_playlist->getPlaylistItemCount($playlistId); $data = array( - 'is_logged_in' => $is_logged_in, + 'is_logged_in' => $this->session->userdata('logged_in'), 'items' => $items, 'itemCount' => $itemCount ); @@ -114,29 +126,36 @@ class Playlist extends CI_Controller { } public function deleteItem($playlistId, $itemId) { + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } + $this->Model_playlist->deleteItem($playlistId, $itemId); redirect('playlist/view/' . $playlistId); } public function delete($playlist_id) { - $is_logged_in = $this->session->userdata('logged_in'); - $user_email = $this->session->userdata('email'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } $this->Model_playlist->deletePlaylist($playlist_id); redirect('playlist'); } public function duplicate($playlist_id) { - $is_logged_in = $this->session->userdata('logged_in'); - $user_email = $this->session->userdata('email'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } - $this->Model_playlist->duplicatePlaylist($playlist_id, $user_email); + $this->Model_playlist->duplicatePlaylist($playlist_id); redirect('playlist'); } public function rename() { - $is_logged_in = $this->session->userdata('logged_in'); - $user_email = $this->session->userdata('email'); + if (!$this->session->userdata('logged_in')) { + redirect('connect/login'); + } $playlistId = $this->input->post('playlistId'); $newName = $this->input->post('newName'); @@ -145,3 +164,4 @@ class Playlist extends CI_Controller { redirect('playlist'); } } +?> diff --git a/application/models/Model_playlist.php b/application/models/Model_playlist.php index cd330bf..2e0a958 100644 --- a/application/models/Model_playlist.php +++ b/application/models/Model_playlist.php @@ -109,7 +109,7 @@ class Model_playlist extends CI_Model { $this->db->insert('playlists', $data); $playlistId = $this->db->insert_id(); - // Filtrage des chansons par genre + // Filtrage des chansons par genre et sélection aléatoire $this->db->select('track.id'); $this->db->from('track'); $this->db->join('song', 'track.songid = song.id'); @@ -120,17 +120,13 @@ class Model_playlist extends CI_Model { $this->db->where('genre.name', $genre); } + $this->db->order_by('RAND()'); + $this->db->limit($numSongs); + $query = $this->db->get(); $songs = $query->result(); - if ($numSongs > count($songs)) { - $numSongs = count($songs); - } - - // Sélection aléatoire de chansons - $randomKeys = array_rand($songs, $numSongs); - foreach ($randomKeys as $key) { - $song = $songs[$key]; + foreach ($songs as $song) { $this->addItem($playlistId, $song->id, 'song'); } diff --git a/application/models/User_model.php b/application/models/User_model.php index 3bbd227..72aa721 100644 --- a/application/models/User_model.php +++ b/application/models/User_model.php @@ -14,6 +14,12 @@ class User_model extends CI_Model { public function create_user($data) { return $this->db->insert('user', $data); } + + public function emailExists($email) { + $this->db->where('email', $email); + $query = $this->db->get('user'); + return $query->num_rows() > 0; + } } ?> diff --git a/application/views/albums_list.php b/application/views/albums_list.php index 9a9be6e..e0048c3 100644 --- a/application/views/albums_list.php +++ b/application/views/albums_list.php @@ -82,23 +82,23 @@ height: 3em; /* Ajuste en fonction de la taille de la police */ } - .pagination a, .pagination span { - padding: 8px 12px; - margin: 0 2px; - border-radius: 4px; - border: 1px solid #ddd; - color: #333; - text-decoration: none; - } + .pagination a, .pagination span { + padding: 8px 12px; + margin: 0 2px; + border-radius: 4px; + border: 1px solid #b02dff; /* Couleur violet clair */ + color: #b02dff; /* Couleur violet clair */ + text-decoration: none; + } - .pagination a:hover { - background-color: #f0f0f0; - border-color: #bbb; - } + .pagination a:hover { + background-color: #f3e8ff; /* Couleur violet très clair */ + border-color: #a86bff; /* Couleur violet moyen */ + } - .pagination .is-current { - background-color: #3273dc; - border-color: #3273dc; - color: #fff; - } - </style> \ No newline at end of file + .pagination .is-current { + background-color: #8a4dff; /* Couleur violet de Bulma */ + border-color: #8a4dff; /* Couleur violet de Bulma */ + color: #fff; + } +</style> \ No newline at end of file diff --git a/application/views/artists_list.php b/application/views/artists_list.php index f70d6bd..6852b5f 100644 --- a/application/views/artists_list.php +++ b/application/views/artists_list.php @@ -33,19 +33,19 @@ padding: 8px 12px; margin: 0 2px; border-radius: 4px; - border: 1px solid #ddd; - color: #333; + border: 1px solid #b02dff; /* Couleur violet clair */ + color: #b02dff; /* Couleur violet clair */ text-decoration: none; } .pagination a:hover { - background-color: #f0f0f0; - border-color: #bbb; + background-color: #f3e8ff; /* Couleur violet très clair */ + border-color: #a86bff; /* Couleur violet moyen */ } .pagination .is-current { - background-color: #3273dc; - border-color: #3273dc; + background-color: #8a4dff; /* Couleur violet de Bulma */ + border-color: #8a4dff; /* Couleur violet de Bulma */ color: #fff; } </style> diff --git a/application/views/create.php b/application/views/create.php index c729345..2a2a764 100644 --- a/application/views/create.php +++ b/application/views/create.php @@ -8,6 +8,11 @@ <div class="column is-5"> <div class="box"> <h1 class="title is-1 has-text-centered">Inscription</h1> + <?php if (isset($error)): ?> + <div class="notification is-danger"> + <?= $error ?> + </div> + <?php endif; ?> <?=validation_errors(); ?> <?=form_open('connect/create')?> <div class="field"> @@ -27,6 +32,9 @@ <div class="control"> <input class="input is-dark" type="email" id="email" name="email" placeholder="Email" value="<?=set_value('email')?>" required> </div> + <?php if (isset($error)): ?> + <p class="help is-danger"><?= $error ?></p> + <?php endif; ?> </div> <div class="field"> <label class="label" for="password">Mot de passe</label> diff --git a/application/views/layout/header.php b/application/views/layout/header.php index 695048a..fa58832 100644 --- a/application/views/layout/header.php +++ b/application/views/layout/header.php @@ -38,7 +38,7 @@ <a class="button is-light" href="<?= site_url('connect/logout') ?>">Déconnexion</a> <?php else: ?> <a class="button is-light" href="<?= site_url('connect/login') ?>">Connexion</a> - <a class="button is-primary" href="<?= site_url('connect/create') ?>">Inscription</a> + <a class="button is-signup" href="<?= site_url('connect/create') ?>">Inscription</a> <?php endif; ?> </div> </div> @@ -64,5 +64,19 @@ } }); </script> + + <style> + .button.is-signup { + background-color: #b02dff; + border-color: #b02dff; + color: #fff; + } + + .button.is-signup:hover { + background-color: #9a29e6; + border-color: #9a29e6; + } + + </style> </body> </html> diff --git a/application/views/musiques_list.php b/application/views/musiques_list.php index c14fe23..acf3039 100644 --- a/application/views/musiques_list.php +++ b/application/views/musiques_list.php @@ -37,28 +37,25 @@ </section> - <style> + .pagination a, .pagination span { + padding: 8px 12px; + margin: 0 2px; + border-radius: 4px; + border: 1px solid #b02dff; /* Couleur violet clair */ + color: #b02dff; /* Couleur violet clair */ + text-decoration: none; + } -.pagination a, .pagination span { - padding: 8px 12px; - margin: 0 2px; - border-radius: 4px; - border: 1px solid #ddd; - color: #333; - text-decoration: none; -} - -.pagination a:hover { - background-color: #f0f0f0; - border-color: #bbb; -} - -.pagination .is-current { - background-color: #3273dc; - border-color: #3273dc; - color: #fff; -} + .pagination a:hover { + background-color: #f3e8ff; /* Couleur violet très clair */ + border-color: #a86bff; /* Couleur violet moyen */ + } + .pagination .is-current { + background-color: #8a4dff; /* Couleur violet de Bulma */ + border-color: #8a4dff; /* Couleur violet de Bulma */ + color: #fff; + } </style>