1
0
mirror of https://git.cant.at/Madeorsk/PollVerlaine synced 2024-12-22 19:47:54 +01:00
PollVerlaine/index.php
Madeorsk 5ac9b5d0e4 End of Home page, begin of Poll page and Configuration
* Finished Home page behavior;
* Started Poll (just the title for now);
* Changed POST /polls return code to 206 (CREATED);
+ Add a configuration file (only app_url inside of it for now).
2018-08-12 19:29:13 +02:00

52 lines
1.2 KiB
PHP

<?php
require __DIR__ . "/vendor/autoload.php";
require __DIR__ . "/models/Poll.php";
require __DIR__ . "/config/app.php";
function format_poll($poll)
{
return [
"id" => $poll->id,
"title" => $poll->title,
"creation_date" => $poll->creation_date,
"options" => $poll->options,
];
}
Flight::route("POST /polls", function () {
$request = Flight::request();
if ($request->type === "application/json")
{
$request_json = $request->data;
$poll = Poll::create_poll($request_json);
if ($poll)
Flight::json(format_poll($poll), 206);
else
Flight::halt(403, "<h1>403 Forbidden</h1><h3>Invalid data.</h3>");
}
else
Flight::halt(403, "<h1>403 Forbidden</h1><h3>Invalid Content-Type.</h3>");
});
Flight::route("GET /polls/@id:[a-fA-F0-9]+", function ($id) {
$poll = Poll::load_poll($id);
if ($poll)
{
if (Flight::request()->type === "application/json")
Flight::json(format_poll($poll));
else
{
Flight::render("poll", ["poll" => $poll], "body_content");
Flight::render("layout");
}
}
else
Flight::notFound();
});
Flight::route("/", function () {
global $VERLAINE;
Flight::render("home", ["app_url" => $VERLAINE["app_url"]], "body_content");
Flight::render("layout");
});
Flight::start();