2023-06-08 15:10:27 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
namespace api\blog;
|
2023-06-09 14:50:20 +01:00
|
|
|
require_once __DIR__ . "/../utils/routesInterface.php";
|
|
|
|
require_once "blogData.php";
|
2023-06-08 15:10:27 +01:00
|
|
|
|
2023-06-09 14:50:20 +01:00
|
|
|
use api\utils\routesInterface;
|
|
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
2023-06-08 15:10:27 +01:00
|
|
|
use Slim\App;
|
|
|
|
|
2023-06-09 14:50:20 +01:00
|
|
|
class blogRoutes implements routesInterface
|
2023-06-08 15:10:27 +01:00
|
|
|
{
|
|
|
|
private blogData $blogData;
|
2023-06-09 14:50:20 +01:00
|
|
|
/**
|
|
|
|
* 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
|
|
|
|
*/
|
2023-06-08 15:10:27 +01:00
|
|
|
public function __construct(App $app)
|
|
|
|
{
|
|
|
|
$this->blogData = new blogData();
|
|
|
|
$this->createRoutes($app);
|
|
|
|
}
|
|
|
|
|
2023-06-09 14:50:20 +01:00
|
|
|
/**
|
|
|
|
* creates the routes for the blog
|
|
|
|
* @param App $app - the slim app used to create the routes
|
|
|
|
* @return void - returns nothing
|
|
|
|
*/
|
2023-06-08 15:10:27 +01:00
|
|
|
public function createRoutes(App $app): void
|
|
|
|
{
|
2023-06-26 03:54:25 +01:00
|
|
|
$app->post("/blog/post", function (Request $request, Response $response, array $args)
|
|
|
|
{
|
|
|
|
$data = $request->getParsedBody();
|
|
|
|
$files = $request->getUploadedFiles();
|
|
|
|
if (empty($data["title"]) || empty($data["body"]) || empty($data["dateCreated"]) || empty($data["featured"]) || empty($data["categories"]) || empty($files["headerImg"]))
|
|
|
|
{
|
|
|
|
// uh oh sent some empty data
|
|
|
|
$response->getBody()->write(json_encode(array("error" => "Error, empty data sent")));
|
|
|
|
return $response->withStatus(400);
|
|
|
|
}
|
|
|
|
|
|
|
|
$insertedID = $this->blogData->createPost($data["title"], $data["body"], $data["dateCreated"], $data["featured"], $data["categories"], $files["headerImg"]);
|
|
|
|
if (!is_int($insertedID))
|
|
|
|
{
|
|
|
|
// uh oh something went wrong
|
|
|
|
$response->getBody()->write(json_encode(array("error" => $insertedID)));
|
|
|
|
return $response->withStatus(500);
|
|
|
|
}
|
|
|
|
$response->getBody()->write(json_encode(array("ID" => $insertedID)));
|
|
|
|
return $response->withStatus(201);
|
|
|
|
});
|
|
|
|
|
|
|
|
$app->post("/blog/uploadPostImage", function (Request $request, Response $response)
|
|
|
|
{
|
|
|
|
$files = $request->getUploadedFiles();
|
|
|
|
if (empty($files))
|
|
|
|
{
|
|
|
|
// uh oh sent some empty data
|
|
|
|
$response->getBody()->write(json_encode(array("error" => array("message" => "Error, empty data sent"))));
|
|
|
|
return $response->withStatus(400);
|
|
|
|
}
|
|
|
|
|
|
|
|
$message = $this->blogData->uploadPostImage($files["upload"]);
|
|
|
|
if (!is_array($message))
|
|
|
|
{
|
|
|
|
$response->getBody()->write(json_encode(array("error" => array("message" => $message))));
|
|
|
|
return $response->withStatus(500);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
$response->getBody()->write(json_encode($message));
|
|
|
|
return $response->withStatus(201);
|
|
|
|
});
|
2023-06-08 15:10:27 +01:00
|
|
|
}
|
|
|
|
}
|