<?php defined('BASEPATH') OR exit('No direct script access allowed'); class Playlist extends CI_Controller { public function __construct() { parent::__construct(); $this->load->model('Model_playlist'); $this->load->model('Model_music'); $this->load->library('session'); if (!$this->session->userdata('logged_in')) { redirect('connect/login'); } } public function index($data = []) { $is_logged_in = $this->session->userdata('logged_in'); $user_email = $this->session->userdata('email'); $data['is_logged_in'] = $is_logged_in; $data['playlists'] = $this->Model_playlist->getPlaylistsByUser($user_email); $data['genres'] = $this->Model_playlist->getGenres(); $this->load->view('layout/header', $data); $this->load->view('playlists_list', $data); $this->load->view('layout/footer'); } public function add() { 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'); $genre = $this->input->post('genre'); if ($type == 'random') { if ($numSongs <= 0) { $data['error'] = 'Le nombre de chansons doit être supérieur à 0'; $this->index($data); return; } $result = $this->Model_playlist->createRandomPlaylist($user_email, $name, $numSongs, $genre); if (!$result) { $data['error'] = 'Erreur lors de la création de la playlist aléatoire'; $this->index($data); return; } } else { $this->Model_playlist->addPlaylist($user_email, $name); } redirect('playlist'); } public function selectPlaylist() { 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' => $this->session->userdata('logged_in'), 'itemId' => $itemId, 'itemType' => $itemType, 'playlists' => $playlists ); $this->load->view('layout/header', $data); $this->load->view('select_playlist', $data); $this->load->view('layout/footer'); } 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'); if ($itemType == 'album') { $songs = $this->Model_music->getSongsByAlbum($itemId); foreach ($songs as $song) { $this->Model_playlist->addItem($playlistId, $song->trackId, 'song'); } } else if ($itemType == 'artist') { $albums = $this->Model_music->getAlbumsByArtist($itemId); foreach ($albums as $album) { $songs = $this->Model_music->getSongsByAlbum($album->albumId); foreach ($songs as $song) { $this->Model_playlist->addItem($playlistId, $song->trackId, 'song'); } } } else { $this->Model_playlist->addItem($playlistId, $itemId, 'song'); } redirect('playlist/view/' . $playlistId); } public function view($playlistId) { 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' => $this->session->userdata('logged_in'), 'items' => $items, 'itemCount' => $itemCount ); $this->load->view('layout/header', $data); $this->load->view('playlist_details', $data); $this->load->view('layout/footer'); } 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) { if (!$this->session->userdata('logged_in')) { redirect('connect/login'); } $this->Model_playlist->deletePlaylist($playlist_id); redirect('playlist'); } public function duplicate($playlist_id) { if (!$this->session->userdata('logged_in')) { redirect('connect/login'); } $this->Model_playlist->duplicatePlaylist($playlist_id); redirect('playlist'); } public function rename() { if (!$this->session->userdata('logged_in')) { redirect('connect/login'); } $playlistId = $this->input->post('playlistId'); $newName = $this->input->post('newName'); $this->Model_playlist->renamePlaylist($playlistId, $newName); redirect('playlist'); } } ?>