You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
5.3 KiB
PHP
155 lines
5.3 KiB
PHP
<?php
|
|
|
|
namespace brain\api\v1;
|
|
|
|
use Slim\Views\Twig;
|
|
use brain\api\v1\ImagesApi;
|
|
use brain\data\Render;
|
|
use brain\data\Settings;
|
|
use brain\data\Session;
|
|
use brain\utility\Maintenance;
|
|
|
|
class SettingsAPI
|
|
{
|
|
public function __construct()
|
|
{
|
|
}
|
|
|
|
public static function handleSettingsTask($request, $args, $body = null)
|
|
{
|
|
$task = $args["fourth"];
|
|
switch ($task) {
|
|
case "publish":
|
|
//check settings to see if site is a one pager
|
|
$config = new Settings();
|
|
$settings = $config->getSettings();
|
|
$theme = $settings["global"]["theme"];
|
|
$themeConfig = json_decode(
|
|
file_get_contents("../content/themes/" . $theme . "/theme.json"),
|
|
true
|
|
);
|
|
//check to see if dynamic rendering is active
|
|
if (
|
|
isset($settings["global"]["dynamicRender"]) &&
|
|
$settings["global"]["dynamicRender"] === "true"
|
|
) {
|
|
$result = [
|
|
"message" => "Dynamic Render Active! You're good!",
|
|
"type" => "RENDER_SUCCESS",
|
|
];
|
|
} else {
|
|
$render = new Render();
|
|
if (isset($themeConfig["render"])) {
|
|
if (!$themeConfig["render"] || $themeConfig["render"] === "false") {
|
|
$render->renderIndex();
|
|
$result = [
|
|
"message" => "Index Rendered. HAND CLAPS",
|
|
"type" => "RENDER_SUCCESS",
|
|
];
|
|
} else {
|
|
$render->renderTags();
|
|
$render->renderArchive();
|
|
$render->renderPages();
|
|
$result = [
|
|
"message" => "Site Rendered. GOOD EFFORT",
|
|
"type" => "RENDER_SUCCESS",
|
|
];
|
|
}
|
|
} else {
|
|
// just incase the render flag is missing
|
|
$render->renderTags();
|
|
$render->renderArchive();
|
|
$render->renderPages();
|
|
$result = [
|
|
"message" => "Site Rendered. GOOD EFFORT",
|
|
"type" => "RENDER_SUCCESS",
|
|
];
|
|
}
|
|
}
|
|
|
|
//if render flag is set and false, just render index page for one page sites
|
|
//otherwise, render all pages according to theme template files
|
|
|
|
break;
|
|
case "add-avatar":
|
|
$result = ImagesAPI::uploadImage($request, "avatar");
|
|
break;
|
|
case "add-feature-background":
|
|
$result = ImagesAPI::uploadImage($request, "background");
|
|
break;
|
|
case "sync":
|
|
Settings::sync($body);
|
|
$result = [
|
|
"message" => "Settings Synced. You're doing great!",
|
|
"type" => "settingsUpdated",
|
|
];
|
|
break;
|
|
case "nav-sync":
|
|
Settings::navSync($body);
|
|
$result = [
|
|
"message" => "Navigation updated. Very slick!",
|
|
"type" => "menuUpdated",
|
|
];
|
|
break;
|
|
default:
|
|
$result = [
|
|
"message" => "Hm, no task. That's unfortunate",
|
|
"type" => "TASK_NONE",
|
|
];
|
|
break;
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
public static function getInfo($request, $args)
|
|
{
|
|
$task = $args["fourth"];
|
|
switch ($task) {
|
|
case "site":
|
|
$config = new Settings();
|
|
$settings = $config->getSettings();
|
|
$data = [
|
|
"title" => $settings["global"]["title"],
|
|
"base_url" => $settings["global"]["base_url"],
|
|
"description" => $settings["global"]["descriptions"],
|
|
];
|
|
$result = [
|
|
"message" => "Settings Found",
|
|
"type" => "GET_SETTINGS",
|
|
"data" => $data,
|
|
];
|
|
break;
|
|
case "member":
|
|
if (Session::active()) {
|
|
$member = $member = Session::get("member");
|
|
$data = ["handle" => $member["handle"], "email" => $member["email"]];
|
|
$result = [
|
|
"message" => "Member Info Found",
|
|
"type" => "GET_MEMBER_INFO",
|
|
"data" => $data,
|
|
];
|
|
} else {
|
|
$result = [
|
|
"message" => "Not logged in. C'mon, bruh",
|
|
"type" => "TASK_NONE",
|
|
];
|
|
}
|
|
break;
|
|
default:
|
|
$result = [
|
|
"message" => "No Settings found. Frowny Face",
|
|
"type" => "TASK_NONE",
|
|
];
|
|
break;
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
public static function createBackup()
|
|
{
|
|
$result = Maintenance::makeBackup();
|
|
return $result;
|
|
}
|
|
}
|