Skip to content
Snippets Groups Projects
Commit 8a6867f0 authored by mrsyaban's avatar mrsyaban
Browse files

handle search non prem

parent 0391daca
No related merge requests found
<?php
class GetSearchEpisodeRestController
{
public function call()
{
$episodeModel = new EpisodeModel();
$keyword = "";
$genre = "";
if (isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
}
if (isset($_GET["genre"])){
$genre = $_GET["genre"];
}
$episodes = $episodeModel->getSearchRest($keyword, $genre);
http_response_code(200);
header("Content-Type: application/json");
echo json_encode(["episodes" => $episodes]);
return;
}
}
<?php
class GetSearchPodcastRestController
{
public function call()
{
$podcastModel = new PodcastModel();
$keyword = "";
$genre = "";
if (isset($_GET["keyword"])){
$keyword = $_GET["keyword"];
}
if (isset($_GET["genre"])){
$genre = $_GET["genre"];
}
$podcasts = $podcastModel->getSearchPodcast($keyword, $genre);
http_response_code(200);
header("Content-Type: application/json");
echo json_encode(["podcasts" => $podcasts]);
return;
}
}
...@@ -51,6 +51,9 @@ class App ...@@ -51,6 +51,9 @@ class App
$router->get("public/episode-by-id", new GetEpisodeController()); $router->get("public/episode-by-id", new GetEpisodeController());
$router->get("public/random-podcast", new GetRandomPodcastController()); $router->get("public/random-podcast", new GetRandomPodcastController());
$router->get("public/rest/search/podcast", new GetSearchPodcastRestController());
$router->get("public/rest/search/episode", new GetSearchEpisodeRestController());
// POST routes // POST routes
$router->post("public/logout", new LogoutController()); $router->post("public/logout", new LogoutController());
$router->post("public/login", new PostLoginController()); $router->post("public/login", new PostLoginController());
......
...@@ -55,6 +55,8 @@ require_once __DIR__ . "/controllers/seed/post_seed.php"; ...@@ -55,6 +55,8 @@ require_once __DIR__ . "/controllers/seed/post_seed.php";
require_once __DIR__ . "/controllers/podcast/get_podcast.php"; require_once __DIR__ . "/controllers/podcast/get_podcast.php";
require_once __DIR__ . "/controllers/episode/get_episode.php"; require_once __DIR__ . "/controllers/episode/get_episode.php";
require_once __DIR__ . "/controllers/podcast/get_random_podcast.php"; require_once __DIR__ . "/controllers/podcast/get_random_podcast.php";
require_once __DIR__ . "/controllers/search/get_search_rest.php";
require_once __DIR__ . "/controllers/search/get_episode_rest.php";
require_once __DIR__ . "/models/podcast.php"; require_once __DIR__ . "/models/podcast.php";
require_once __DIR__ . "/models/episode.php"; require_once __DIR__ . "/models/episode.php";
......
...@@ -129,4 +129,23 @@ class EpisodeModel ...@@ -129,4 +129,23 @@ class EpisodeModel
$episode = $this->db->fetchAll(); $episode = $this->db->fetchAll();
return $episode; return $episode;
} }
public function getSearchRest($keyword, $genre)
{
$query = "
SELECT e.id_episode, e.title, e.description, e.url_thumbnail, p.title AS podcast_title
FROM episode e
NATURAL JOIN podcast p
WHERE e.title LIKE :keyword
AND p.category LIKE :genre
";
$this->db->query($query);
$this->db->bind("keyword", '%' . $keyword . '%');
$this->db->bind("genre", $genre == "" ? '%' : $genre);
$podcasts = $this->db->fetchAll();
return $podcasts;
}
} }
...@@ -248,4 +248,25 @@ class PodcastModel ...@@ -248,4 +248,25 @@ class PodcastModel
$podcast = $this->db->fetchAll(); $podcast = $this->db->fetchAll();
return $podcast; return $podcast;
} }
public function getSearchPodcast($keyword, $genre)
{
$query =
"SELECT p.id_podcast, p.title, p.description, p.url_thumbnail
FROM podcast AS p
LEFT JOIN episode AS e ON p.id_podcast = e.id_podcast
WHERE (p.title LIKE :search_value
OR p.description LIKE :search_value)
AND p.category LIKE :genre
";
$this->db->query($query);
$this->db->bind("search_value", '%' . $keyword . '%');
$this->db->bind("genre", $genre == "" ? '%' : $genre);
$podcasts = $this->db->fetchAll();
return $podcasts;
}
} }
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment