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.
anonupload/admin/dashboard/main.php

158 lines
6.4 KiB
PHP

<?php
// Check if the user is logged-in
include_once '../protect.php';
// Read comfiguration file
include_once '../../system/config.php';
// Add/remove roles from the list
$roles_list = ['Admin', 'Member'];
// Logout User on '?logout' -->
if(isset($_GET['logout']))
{
logout();
}
// Logout Function -->
function logout(){
session_destroy();
header("Location: ../");
exit();
}
// Template admin header
function template_admin_header($title, $selected = 'dashboard', $selected_child = '') {
// Admin HTML links
$admin_links = '
<a href="index.php"' . ($selected == 'dashboard' ? ' class="selected"' : '') . '><i class="fas fa-tachometer-alt"></i>Dashboard</a>
<a href="files.php"' . ($selected == 'files' ? ' class="selected"' : '') . '><i class="fas fa-file-alt"></i>Files</a>
<a href="settings.php"' . ($selected == 'settings' ? ' class="selected"' : '') . '><i class="fas fa-tools"></i>Settings</a>
<div class="footer">
<a href="https://github.com/supernova3339/anonfiles" target="_blank">AnonFiles</a>
Version ' . version . '
</div>
';
// Indenting the below code may cause an error
echo <<<EOT
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,minimum-scale=1">
<title>$title</title>
<link href="admin.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v6.0.0/css/all.css">
</head>
<body class="admin">
<aside class="responsive-width-100 responsive-hidden">
<h1>Anonfiles Admin Panel</h1>
$admin_links
</aside>
<main class="responsive-width-100">
<header>
<a class="responsive-toggle" href="#">
<i class="fas fa-bars"></i>
</a>
<div class="space-between"></div>
<a href="?logout" class="right"><i class="fas fa-sign-out-alt"></i></a>
</header>
EOT;
}
// Template admin footer
function template_admin_footer() {
// Indenting the below code may cause an error
echo <<<EOT
</main>
<script>
let aside = document.querySelector("aside"), main = document.querySelector("main"), header = document.querySelector("header");
let asideStyle = window.getComputedStyle(aside);
if (localStorage.getItem("admin_menu") == "closed") {
aside.classList.add("closed", "responsive-hidden");
main.classList.add("full");
header.classList.add("full");
}
document.querySelector(".responsive-toggle").onclick = event => {
event.preventDefault();
if (asideStyle.display == "none") {
aside.classList.remove("closed", "responsive-hidden");
main.classList.remove("full");
header.classList.remove("full");
localStorage.setItem("admin_menu", "");
} else {
aside.classList.add("closed", "responsive-hidden");
main.classList.add("full");
header.classList.add("full");
localStorage.setItem("admin_menu", "closed");
}
};
document.querySelectorAll(".tabs a").forEach((element, index) => {
element.onclick = event => {
event.preventDefault();
document.querySelectorAll(".tabs a").forEach((element, index) => element.classList.remove("active"));
document.querySelectorAll(".tab-content").forEach((element2, index2) => {
if (index == index2) {
element.classList.add("active");
element2.style.display = "block";
} else {
element2.style.display = "none";
}
});
};
});
if (document.querySelector(".filters a")) {
let filtersList = document.querySelector(".filters .list");
let filtersListStyle = window.getComputedStyle(filtersList);
document.querySelector(".filters a").onclick = event => {
event.preventDefault();
if (filtersListStyle.display == "none") {
filtersList.style.display = "flex";
} else {
filtersList.style.display = "none";
}
};
document.onclick = event => {
if (!event.target.closest(".filters")) {
filtersList.style.display = "none";
}
};
}
document.querySelectorAll(".msg").forEach(element => {
element.querySelector(".fa-times").onclick = () => {
element.remove();
history.replaceState && history.replaceState(null, '', location.pathname + location.search.replace(/[\?&]success_msg=[^&]+/, '').replace(/^&/, '?') + location.hash);
history.replaceState && history.replaceState(null, '', location.pathname + location.search.replace(/[\?&]error_msg=[^&]+/, '').replace(/^&/, '?') + location.hash);
};
});
history.replaceState && history.replaceState(null, '', location.pathname + location.search.replace(/[\?&]success_msg=[^&]+/, '').replace(/^&/, '?') + location.hash);
history.replaceState && history.replaceState(null, '', location.pathname + location.search.replace(/[\?&]error_msg=[^&]+/, '').replace(/^&/, '?') + location.hash);
</script>
</body>
</html>
EOT;
}
// Convert date to elapsed string function
function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = ['y' => 'year','m' => 'month','w' => 'week','d' => 'day','h' => 'hour','i' => 'minute','s' => 'second'];
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
function str_to_version_info($string)
{
$latest_version = FALSE;
if (preg_match('/^\s*?(\d+\.\d+\.\d+)/i', $string, $match)) {
$latest_version = $match[1];
}
return $latest_version;
}
?>