From d34cf7e77cccc31eb313f3140b999dccb17fc557 Mon Sep 17 00:00:00 2001 From: Rava Maulana <ravamaulana14@gmail.com> Date: Mon, 30 Oct 2023 20:18:53 +0700 Subject: [PATCH] feat: added episode to session on play --- docker-compose.yaml | 2 ++ .../controllers/episode/post_play_episode.php | 31 +++++++++++++++++++ src/app/core/app.php | 1 + src/app/init.php | 1 + src/public/javascript/podcast/script.js | 19 +++++++++--- 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 src/app/controllers/episode/post_play_episode.php diff --git a/docker-compose.yaml b/docker-compose.yaml index 1e35da2..629c548 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,6 +15,8 @@ services: restart: always ports: - 3308:3307 + expose: + - 3307 hostname: tubes-php-db env_file: .env volumes: diff --git a/src/app/controllers/episode/post_play_episode.php b/src/app/controllers/episode/post_play_episode.php new file mode 100644 index 0000000..f21f6d8 --- /dev/null +++ b/src/app/controllers/episode/post_play_episode.php @@ -0,0 +1,31 @@ +<?php + +class PostPlayEpisodeController +{ + public function call() + { + session_start(); + if (!isset($_SESSION["user_id"])) { + http_response_code(403); + header("Content-Type: application/json"); + echo json_encode(["message" => "unauthorized"]); + + return; + } + + // Check for podcast id + if (!isset($_POST["idEpisode"])) { + http_response_code(400); + header("Content-Type: application/json"); + echo json_encode(["message" => "missing episode id"]); + + return; + } + + $_SESSION["eps_id"] = $_POST["idEpisode"]; + + http_response_code(200); + header("Content-Type: application/json"); + echo json_encode(["message" => "success"]); + } +} diff --git a/src/app/core/app.php b/src/app/core/app.php index 8432475..af5ac7b 100644 --- a/src/app/core/app.php +++ b/src/app/core/app.php @@ -28,6 +28,7 @@ class App $router->delete("public/dashboard/podcast", new DeletePodcastController()); $router->get("public/podcast", new GetPodcastPageController()); + $router->post("public/episode/play", new PostPlayEpisodeController()); $router->post("public/logout", new LogoutController()); diff --git a/src/app/init.php b/src/app/init.php index a984ef3..3ad6489 100644 --- a/src/app/init.php +++ b/src/app/init.php @@ -22,6 +22,7 @@ require_once __DIR__ . "/controllers/dashboard/post_edit_podcast.php"; require_once __DIR__ . "/controllers/dashboard/delete_podcast.php"; require_once __DIR__ . "/controllers/podcast/get_page.php"; +require_once __DIR__ . "/controllers/episode/post_play_episode.php"; require_once __DIR__ . "/controllers/logout/logout.php"; diff --git a/src/public/javascript/podcast/script.js b/src/public/javascript/podcast/script.js index b1dd6de..ba22950 100644 --- a/src/public/javascript/podcast/script.js +++ b/src/public/javascript/podcast/script.js @@ -2,16 +2,27 @@ // Get DOM elements const playButtonsEl = document.querySelectorAll(".play-button"); -const addLibraryButtonEl = document.getElementById("add-library-btn") -const libraryChoicesEl = document.getElementById("library-choices") -const overlayEl = document.getElementById("overlay-library") +const addLibraryButtonEl = document.getElementById("add-library-btn"); +const libraryChoicesEl = document.getElementById("library-choices"); +const overlayEl = document.getElementById("overlay-library"); // Handle play episode Array.from(playButtonsEl).forEach((el) => { el.addEventListener("click", (e) => { e.preventDefault(); - console.log(`play episode id: ${el.dataset.id}`); + const formData = new FormData(); + formData.append("idEpisode", el.dataset.id); + + const xhr = new XMLHttpRequest(); + xhr.open("POST", "/public/episode/play"); + + xhr.onreadystatechange = () => { + if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) { + } + }; + + xhr.send(formData); }); }); -- GitLab