Created individual categories page
Signed-off-by: rodude123 <rodude123@gmail.com>
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace api\blog;
|
||||
|
||||
use api\utils\imgUtils;
|
||||
use DOMDocument;
|
||||
use PDO;
|
||||
@@ -91,7 +93,8 @@ class blogData
|
||||
|
||||
$result = $stmt->fetch(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($result) {
|
||||
if ($result)
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -113,7 +116,8 @@ class blogData
|
||||
// set the resulting array to associative
|
||||
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
if ($result) {
|
||||
if ($result)
|
||||
{
|
||||
return $result;
|
||||
}
|
||||
|
||||
@@ -123,7 +127,7 @@ class blogData
|
||||
public function getCategories(): array
|
||||
{
|
||||
$conn = dbConn();
|
||||
$stmt = $conn->prepare("SELECT categories FROM blog;");
|
||||
$stmt = $conn->prepare("SELECT DISTINCT categories FROM blog;");
|
||||
$stmt->execute();
|
||||
|
||||
// set the resulting array to associative
|
||||
@@ -428,17 +432,15 @@ class blogData
|
||||
|
||||
/**
|
||||
* Get all posts with the given category
|
||||
* @param mixed $category - Category of the post
|
||||
* @param string $category - Category of the post
|
||||
* @return array - Array of all posts with the given category or error message
|
||||
*/
|
||||
public function getPostsByCategory(mixed $category)
|
||||
public function getPostsByCategory(string $category): array
|
||||
{
|
||||
$conn = dbConn();
|
||||
$stmt = $conn->prepare("SELECT * FROM blog WHERE categories = :category;");
|
||||
$stmt = $conn->prepare("SELECT * FROM blog WHERE LOCATE(:category, categories) > 0;");
|
||||
$stmt->bindParam(":category", $category);
|
||||
$stmt->execute();
|
||||
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
|
||||
|
||||
return $stmt->fetchAll(PDO::FETCH_ASSOC);
|
||||
}
|
||||
}
|
||||
+27
-13
@@ -12,6 +12,7 @@ use Slim\App;
|
||||
class blogRoutes implements routesInterface
|
||||
{
|
||||
private blogData $blogData;
|
||||
|
||||
/**
|
||||
* constructor used to instantiate a base blog routes, to be used in the index.php file.
|
||||
* @param App $app - the slim app used to create the routes
|
||||
@@ -29,9 +30,11 @@ class blogRoutes implements routesInterface
|
||||
*/
|
||||
public function createRoutes(App $app): void
|
||||
{
|
||||
$app->get("/blog/categories", function (Request $request, Response $response) {
|
||||
$app->get("/blog/categories", function (Request $request, Response $response)
|
||||
{
|
||||
$post = $this->blogData->getCategories();
|
||||
if (array_key_exists("errorMessage", $post)) {
|
||||
if (array_key_exists("errorMessage", $post))
|
||||
{
|
||||
$response->getBody()->write(json_encode($post));
|
||||
return $response->withStatus(404);
|
||||
}
|
||||
@@ -40,10 +43,13 @@ class blogRoutes implements routesInterface
|
||||
return $response;
|
||||
});
|
||||
|
||||
$app->get("/blog/categories/{category}", function (Request $request, Response $response, $args) {
|
||||
if ($args["category"] != null) {
|
||||
$app->get("/blog/categories/{category}", function (Request $request, Response $response, $args)
|
||||
{
|
||||
if ($args["category"] != null)
|
||||
{
|
||||
$post = $this->blogData->getPostsByCategory($args["category"]);
|
||||
if (array_key_exists("errorMessage", $post)) {
|
||||
if (array_key_exists("errorMessage", $post))
|
||||
{
|
||||
$response->getBody()->write(json_encode($post));
|
||||
return $response->withStatus(404);
|
||||
}
|
||||
@@ -72,11 +78,15 @@ class blogRoutes implements routesInterface
|
||||
return $response;
|
||||
});
|
||||
|
||||
$app->get("/blog/post/{type}", function (Request $request, Response $response, $args) {
|
||||
if ($args["type"] != null) {
|
||||
if ($args["type"] == "latest") {
|
||||
$app->get("/blog/post/{type}", function (Request $request, Response $response, $args)
|
||||
{
|
||||
if ($args["type"] != null)
|
||||
{
|
||||
if ($args["type"] == "latest")
|
||||
{
|
||||
$post = $this->blogData->getLatestBlogPost();
|
||||
if (array_key_exists("errorMessage", $post)) {
|
||||
if (array_key_exists("errorMessage", $post))
|
||||
{
|
||||
$response->getBody()->write(json_encode($post));
|
||||
return $response->withStatus(404);
|
||||
}
|
||||
@@ -85,9 +95,11 @@ class blogRoutes implements routesInterface
|
||||
return $response;
|
||||
}
|
||||
|
||||
if ($args["type"] == "featured") {
|
||||
if ($args["type"] == "featured")
|
||||
{
|
||||
$post = $this->blogData->getFeaturedBlogPost();
|
||||
if (array_key_exists("errorMessage", $post)) {
|
||||
if (array_key_exists("errorMessage", $post))
|
||||
{
|
||||
$response->getBody()->write(json_encode($post));
|
||||
return $response->withStatus(404);
|
||||
}
|
||||
@@ -123,7 +135,8 @@ class blogRoutes implements routesInterface
|
||||
return $response->withStatus(400);
|
||||
}
|
||||
|
||||
if (!preg_match('/[a-zA-Z0-9 ]+, |\w+/mx', $data["categories"])) {
|
||||
if (!preg_match('/[a-zA-Z0-9 ]+, |\w+/mx', $data["categories"]))
|
||||
{
|
||||
// uh oh sent some empty data
|
||||
$response->getBody()->write(json_encode(array("error" => "Categories must be in a CSV format")));
|
||||
return $response->withStatus(400);
|
||||
@@ -206,7 +219,8 @@ class blogRoutes implements routesInterface
|
||||
return $response->withStatus(400);
|
||||
}
|
||||
|
||||
if (!preg_match('/[a-zA-Z0-9 ]+, |\w+/mx', $data["categories"])) {
|
||||
if (!preg_match('/[a-zA-Z0-9 ]+, |\w+/mx', $data["categories"]))
|
||||
{
|
||||
// uh oh sent some empty data
|
||||
$response->getBody()->write(json_encode(array("error" => "Categories must be in a CSV format")));
|
||||
return $response->withStatus(400);
|
||||
|
||||
Reference in New Issue
Block a user