173 lines
4.7 KiB
PHP
173 lines
4.7 KiB
PHP
<?php
|
|
use function _\filter;
|
|
use Mni\FrontYAML\Parser;
|
|
|
|
class PagesAPI
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public static function getPageContent($request, $args)
|
|
{
|
|
$task = $args["fourth"];
|
|
$pages = (new Book("../content/pages"))->getContents();
|
|
$content = [];
|
|
foreach ($pages as $page) {
|
|
$entry = [
|
|
"id" => $page["id"],
|
|
"uuid" => $page["uuid"],
|
|
"title" => $page["title"],
|
|
"feature" => $page["feature"],
|
|
"path" => $page["path"],
|
|
"layout" => $page["layout"],
|
|
"tags" => $page["tags"],
|
|
"author" => $page["author"],
|
|
"created" => $page["created"],
|
|
"updated" => $page["updated"],
|
|
"deleted" => $page["deleted"],
|
|
"menu" => $page["menu"],
|
|
"featured" => $page["featured"],
|
|
"published" => $page["published"],
|
|
"slug" => $page["slug"],
|
|
"content" => StringTools::sanitizeContent($page["content"]),
|
|
];
|
|
|
|
array_push($content, $entry);
|
|
}
|
|
switch ($task) {
|
|
case "published":
|
|
$published = filter($content, function ($item) {
|
|
return $item["published"] == true && $item["deleted"] == false;
|
|
});
|
|
|
|
$result = ["pages" => $published, "totalItems" => count($published)];
|
|
break;
|
|
case "featured":
|
|
$featured = filter($content, function ($item) {
|
|
return $item["featured"] == true && $item["deleted"] == false;
|
|
});
|
|
|
|
$result = [
|
|
"pages" => $featured,
|
|
"totalItems" => count($featured),
|
|
];
|
|
break;
|
|
case "menu":
|
|
$menu = filter($content, function ($item) {
|
|
return $item["menu"] == true && $item["deleted"] == false;
|
|
});
|
|
|
|
$result = ["pages" => $menu, "totalItems" => count($menu)];
|
|
break;
|
|
case "single":
|
|
$uuid = $args["fifth"];
|
|
$page = (new Book("../content/pages"))->findPageById($uuid);
|
|
|
|
$entry = [
|
|
"id" => $page["id"],
|
|
"uuid" => $page["uuid"],
|
|
"title" => $page["title"],
|
|
"feature" => $page["feature"],
|
|
"path" => $page["path"],
|
|
"layout" => $page["layout"],
|
|
"tags" => $page["tags"],
|
|
"author" => $page["author"],
|
|
"created" => $page["created"],
|
|
"updated" => $page["updated"],
|
|
"deleted" => $page["deleted"],
|
|
"menu" => $page["menu"],
|
|
"featured" => $page["featured"],
|
|
"published" => $page["published"],
|
|
"slug" => $page["slug"],
|
|
"content" => StringTools::sanitizeContent($page["content"]),
|
|
];
|
|
$result = $entry;
|
|
break;
|
|
case "tags":
|
|
$result = Settings::getTags();
|
|
break;
|
|
default:
|
|
$result = [
|
|
"message" => "Hm, no task. That's unfortunate",
|
|
"type" => "TASK_NONE",
|
|
];
|
|
break;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public static function handlePageTask($request, $args)
|
|
{
|
|
$task = $args["fourth"];
|
|
switch ($task) {
|
|
case "delete":
|
|
case "create":
|
|
case "write":
|
|
$body = $request->getParsedBody();
|
|
var_dump($body);
|
|
$passed = true;
|
|
if (!isset($body["form_token"])) {
|
|
$result = [
|
|
"message" => "No form token. Not good, sport.",
|
|
"type" => "TASK_FORM_AUTH",
|
|
];
|
|
} else {
|
|
if ($body["form_token"] == Session::get("form_token")) {
|
|
//TODO: Verify form fields
|
|
$keys = [
|
|
"id",
|
|
"uuid",
|
|
"layout",
|
|
"current_title",
|
|
"content",
|
|
"title",
|
|
"created",
|
|
"slug",
|
|
"tags",
|
|
"menu",
|
|
"featured",
|
|
"published",
|
|
"form_token",
|
|
"feature_image",
|
|
];
|
|
|
|
foreach ($body as $key => $item) {
|
|
if (!in_array($key, $keys)) {
|
|
//found unnecessary key, so reject submission
|
|
$passed = false;
|
|
}
|
|
}
|
|
if ($passed) {
|
|
$result = (new Book())->editPage($task, $request);
|
|
} else {
|
|
$result = [
|
|
"message" =>
|
|
"Unneccessary key found. Post not authorized, slick.",
|
|
"type" => "TASK_FORM_AUTH",
|
|
];
|
|
}
|
|
} else {
|
|
$result = [
|
|
"message" => "Form token, auth failed. Uh oh.",
|
|
"type" => "TASK_FORM_AUTH",
|
|
];
|
|
}
|
|
}
|
|
|
|
break;
|
|
case "add-entry-image":
|
|
$result = ImagesAPI::uploadImage($request);
|
|
break;
|
|
default:
|
|
$result = [
|
|
"message" => "Hm, no task. That's unfortunate",
|
|
"type" => "TASK_NONE",
|
|
];
|
|
break;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
}
|