This repository has been archived on 2022-07-28. You can view files and clone it, but cannot push or open issues or pull requests.
md-cms/edit/inc/functions.php
Joshua Ramon Enslin 0eab8391dd Made input interface multilingual.
Set proper default for CSS file in password_protect.php.
2018-06-18 17:18:06 +02:00

150 lines
3.5 KiB
PHP

<?PHP
/**
* This file contains all the main functions for the backend.
*
* @file
*
* @author Joshua Ramon Enslin <joshua@jrenslin.de>
*/
// Include functions from frontend.
require_once __DIR__ . '/../../inc/functions.php';
require_once __DIR__ . '/standardHTML.php';
/**
* Function for ensuring everything is in order in the backend.
*
* @return void
*/
function ensureBackendEnv() {
// Ensure secure session cookies are used.
ini_set('session.cookie_secure', '1');
ini_set('session.cookie_httponly', '1');
ini_set('session.use_only_cookies', '1');
// Ensure session is started
if (session_status() != PHP_SESSION_ACTIVE) {
session_start();
}
include_once __DIR__ . "/../password_protect.php";
}
/**
* Function that checks all the indexes in the input array for their availability in $_GET or $_POST.
* If they exist in either, they are written to global variables.
*
* @param string[] $vars Input array containing indices, that may be contained in $_GET or $_POST.
*
* @return void
*/
function loadHttpToGlobals(array $vars) {
foreach ($vars as $var) {
if (isset($_GET[$var])) $GLOBALS[$var] = $_GET[$var];
else if (isset($_POST[$var])) $GLOBALS[$var] = $_POST[$var];
}
}
/**
* Function for loading the language.
*
* @param string $default The default language to use.
*
* @return string[]
*/
function loadLanguage($default):array {
if (isset($_GET['lan'])) $_SESSION['lan'] = $lan = $_GET['lan'];
else if (isset($_SESSION['lan'])) $lan = $_SESSION['lan'];
// Default to English
if (!isset($lan) or !file_exists(__DIR__ . "/translations/$lan.php")) {
$lan = $default;
}
include __DIR__ . "/../translations/$lan.php";
return $translations;
}
/**
* Function for generating caches.
*
* @return void
*/
function generateStaticPgCaches() {
// Create empty arrays
// Remove existing caches for static pages.
$targetFiles = [
"allPages" => __DIR__ . "/../../data/caches/pages.json",
"publicPages" => __DIR__ . "/../../data/caches/publicPages.json",
];
foreach ($targetFiles as $key => $file) {
$$key = [];
if (file_exists($file)) unlink($file);
}
// Read contents.
$pagesFiles = scanDirConts(__DIR__ . "/../../data/static");
foreach ($pagesFiles as $file) {
$jsonData = json_decode(file_get_contents(__DIR__ . "/../../data/static/$file"), true);
$tData = [
"id" => str_replace(".json", "", $file), //The ID equals the file name, minus the extension.
"title" => $jsonData['title'],
"higher" => $jsonData["higher"],
"public" => $jsonData["public"],
];
$allPages[$tData["id"]] = $tData;
if ($tData['public']) $publicPages[$tData["id"]] = $tData;
}
// Save to file(s)
foreach ($targetFiles as $key => $file) {
file_put_contents($file, json_encode($$key), LOCK_EX);
}
}
/**
* Function for storing a post.
*
* @param array $pages Array of pages.
* @param array $inputs Input array.
* @param integer $id ID of the currently edited entry. If it is 0, a new one will be set.
*
* @return integer
*/
function storePage(array $pages, array $inputs, int $id = 0):int {
if (!$id) {
if (count($pages) === 0) {
$id = 1;
}
else $id = max(array_keys($pages)) + 1;
}
$filename = __DIR__ . "/../../data/static/$id.json";
file_put_contents($filename, json_encode(array_merge($inputs)), LOCK_EX);
generateStaticPgCaches();
return $id;
}
?>