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.
174 lines
4.9 KiB
PHP
174 lines
4.9 KiB
PHP
<?php
|
|
use function _\find;
|
|
use function _\pull;
|
|
use function _\remove;
|
|
class Settings
|
|
{
|
|
private $folks;
|
|
private $tags;
|
|
private $themes = [];
|
|
private static $settings;
|
|
|
|
public function __construct()
|
|
{
|
|
//gets all settings files and converts to php objects
|
|
$this->folks = json_decode(file_get_contents("../config/folks.json"), true);
|
|
$this->tags = json_decode(file_get_contents("../config/tags.json"), true);
|
|
self::$settings = json_decode(
|
|
file_get_contents("../config/settings.json"),
|
|
true
|
|
);
|
|
|
|
$_themes = glob("../content/themes/*", GLOB_ONLYDIR);
|
|
foreach ($_themes as $theme) {
|
|
array_push(
|
|
$this->themes,
|
|
json_decode(file_get_contents($theme . "/theme.json"), true)
|
|
);
|
|
}
|
|
}
|
|
|
|
public static function sync($data)
|
|
{
|
|
$settings = self::$settings;
|
|
$settings["global"]["base_url"] = $data["global"]["base_url"];
|
|
$settings["global"]["title"] = $data["global"]["title"];
|
|
$settings["global"]["descriptions"] = $data["global"]["descriptions"];
|
|
$settings["global"]["base_url"] = $data["global"]["base_url"];
|
|
$settings["global"]["private"] = $data["global"]["private"];
|
|
$settings["global"]["renderOnSave"] = $data["global"]["renderOnSave"];
|
|
$settings["global"]["theme"] = $data["global"]["theme"];
|
|
|
|
Member::updateData("handle", $data["member"]["handle"]);
|
|
Member::updateData("email", $data["member"]["email"]);
|
|
|
|
$settings["email"]["active"] = $data["email"]["active"];
|
|
$settings["email"]["smtp"] = $data["email"]["smtp"];
|
|
$settings["email"]["mailgun"] = $data["email"]["mailgun"];
|
|
|
|
DocTools::writeSettings("../config/settings.json", $settings);
|
|
}
|
|
|
|
public static function navSync($data)
|
|
{
|
|
$settings = self::$settings;
|
|
|
|
$remove = $data["remove"];
|
|
//if remove contains id, find nav item page and set menu to false
|
|
if ($remove != null || $remove != "") {
|
|
$page = (new Book("../content/pages"))->findPageById($remove);
|
|
$page["menu"] = "false";
|
|
$page["published"]
|
|
? ($page["published"] = "true")
|
|
: ($page["published"] = "false");
|
|
$page["featured"]
|
|
? ($page["featured"] = "true")
|
|
: ($page["featured"] = "false");
|
|
$page["deleted"]
|
|
? ($page["deleted"] = "true")
|
|
: ($page["deleted"] = "false");
|
|
$updated = new \Moment\Moment();
|
|
$created = new \Moment\Moment($page["rawCreated"]);
|
|
$page["created"] = $created->format("Y-m-d\TH:i:sP");
|
|
$page["updated"] = $updated->format("Y-m-d\TH:i:sP");
|
|
|
|
$md = DocTools::objectToMD($page);
|
|
|
|
if ($page["layout"] == "index") {
|
|
$writePath = "../content/pages/start/index.md";
|
|
} else {
|
|
$writePath =
|
|
"../content/pages/" . $page["path"] . "/" . $page["slug"] . ".md";
|
|
}
|
|
|
|
DocTools::writePages("write", $page["path"], $writePath, $md);
|
|
}
|
|
|
|
$settings["menu"] = [];
|
|
$items = $data["menu"];
|
|
foreach ($items as $item) {
|
|
array_push($settings["menu"], [
|
|
"title" => $item["title"],
|
|
"id" => $item["id"],
|
|
"uuid" => $item["uuid"],
|
|
"slug" => $item["slug"],
|
|
"path" => $item["path"],
|
|
]);
|
|
}
|
|
|
|
DocTools::writeSettings("../config/settings.json", $settings);
|
|
}
|
|
|
|
public function getThemes()
|
|
{
|
|
return $this->themes;
|
|
}
|
|
|
|
public function getFolks($key = null)
|
|
{
|
|
if (isset($key)) {
|
|
$member = Session::get("member");
|
|
$found = find($this->folks, ["handle" => $member["handle"]]);
|
|
return $found[$key];
|
|
} else {
|
|
return $this->folks;
|
|
}
|
|
}
|
|
|
|
public function getSettings($key = null)
|
|
{
|
|
return self::$settings;
|
|
}
|
|
|
|
public static function updateGlobalData($key, $data)
|
|
{
|
|
$settings = self::$settings;
|
|
$settings["global"][$key] = $data;
|
|
DocTools::writeSettings("../config/settings.json", $settings);
|
|
}
|
|
|
|
public static function getCurrentIndex()
|
|
{
|
|
$settings = self::$settings;
|
|
return $settings["library_stats"]["current_index"];
|
|
}
|
|
|
|
public static function updateIndex()
|
|
{
|
|
$settings = self::$settings;
|
|
$index = $settings["library_stats"]["current_index"];
|
|
$settings["library_stats"]["current_index"] = $index + 1;
|
|
|
|
DocTools::writeSettings("../config/settings.json", $settings);
|
|
}
|
|
|
|
public static function updateMenu($body)
|
|
{
|
|
$settings = self::$settings;
|
|
//$menu = $settings["menu"];
|
|
$item = [
|
|
"title" => $body["title"],
|
|
"id" => $body["id"],
|
|
"uuid" => $body["uuid"],
|
|
"slug" => $body["slug"],
|
|
"path" => $body["path"],
|
|
];
|
|
if ($body["menu"] == "true") {
|
|
if (!find($settings["menu"], ["uuid" => $item["uuid"]])) {
|
|
array_push($settings["menu"], $item);
|
|
}
|
|
} else {
|
|
if (find($settings["menu"], ["uuid" => $item["uuid"]])) {
|
|
pull($settings["menu"], $item);
|
|
}
|
|
}
|
|
DocTools::writeSettings("../config/settings.json", $settings);
|
|
}
|
|
|
|
public static function updateTags()
|
|
{
|
|
$tags = Sorting::tags();
|
|
DocTools::writeSettings("../config/tags.json", $tags);
|
|
}
|
|
}
|