168 lines
5.4 KiB
PHP
168 lines
5.4 KiB
PHP
<?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');
|
|
}
|
|
}
|
|
?>
|