<?php namespace HashOver;// Copyright (C) 2018-2021 Jacob Barkdull// This file is part of HashOver.//// HashOver is free software: you can redistribute it and/or modify// it under the terms of the GNU Affero General Public License as// published by the Free Software Foundation, either version 3 of the// License, or (at your option) any later version.//// HashOver is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Affero General Public License for more details.//// You should have received a copy of the GNU Affero General Public License// along with HashOver.  If not, see <http://www.gnu.org/licenses/>.// Setup class autoloadersetup_autoloader ();// Instantiate HashOver class$hashover = new \HashOver ();// Instantiate Locale class$hashover->locale = new Locale ($hashover->setup);// Instantiate FileWriter class$data_files = new DataFiles ($hashover->setup);// Redirects the user back to where they came fromfunction redirect ($url = ''){	// Check if we're redirecting to a specific URL	if (!empty ($url)) {		// If so, use it		header ('Location: ' . $url);	} else {		// If not, check if there is a redirect specified		if (!empty ($_GET['redirect'])) {			// If so, use it			header ('Location: ' . $_GET['redirect']);		} else {			// If not, redirect to moderation			header ('Location: ../moderation/');		}	}	// Exit after redirect	exit;}// Parse and return template filesfunction parse_templates ($template, $fragment, array $data, \HashOver $hashover){	// Parse page fragment template file	$page = $hashover->templater->parseTemplate ($fragment, $data);	// Indent page fragment by two tabs	$page = str_replace (PHP_EOL, PHP_EOL . "\t\t", $page);	// Get configured language in en-us format	$language = str_replace ('_', '-', strtolower ($hashover->setup->language));	// Fallback to English if documentation does not exist for configured language	$language = file_exists ('/docs/' . $language) ? $language : 'en-us';	// Merge some default informatin into template data	$data = array_merge ($data, array (		// HTTP root directory		'root' => rtrim ($hashover->setup->httpRoot, '/'),		// HTTP admin root directory		'admin' => $hashover->setup->getHttpPath ('admin'),		// Navigation locale strings		'moderation' => $hashover->locale->text['moderation'],		'ip-blocking' => $hashover->locale->text['block-ip-addresses'],		'url-filtering' => $hashover->locale->text['filter-url-queries'],		'settings' => $hashover->locale->text['settings'],		'updates' => $hashover->locale->text['check-for-updates'],		'docs' => $hashover->locale->text['documentation'],		'logout' => $hashover->locale->text['logout'],		// Configured language in en-us format		'language' => $language,		// Parsed page template		'content' => $page	));	// Check if form has been submitted	if (!empty ($_GET['status'])) {		// If so, check if form submission was successful		if ($_GET['status'] === 'success') {			// If so, add success message locale to template data			$data['message'] = $hashover->locale->text['successful-save'];			// And add message status to template data			$data['message-status'] = 'success';		} else {			// If so, add error message locale to template data			$data['message'] = $hashover->locale->text['failed-to-save'];			// Add file permissions explanation to template data			$data['error'] = $hashover->locale->permissionsInfo ('config');			// And add message status to template data			$data['message-status'] = 'error';		}	}	// Load and parse admin template	$admin = $hashover->templater->parseTemplate ('../' . $template . '.html', $data);	// Return parsed admin template	return $admin;}// Exit if the user isn't logged in as adminif ($hashover->login->userIsAdmin !== true) {	$uri = $_SERVER['REQUEST_URI'];	$uri_parts = explode ('?', $uri);	if (basename ($uri_parts[0]) !== 'login') {		redirect ('../login/?redirect=' . urlencode ($uri));	}}