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; } }