feat: GSP 1.0 baseline – module versions, FAQ refresh, XML editor validation, Obsidian theme

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/40ca313f-3f17-4f62-8f05-ba72540a8d30

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-05-03 23:31:07 +00:00 committed by GitHub
parent 1b3b79447f
commit d564476d1c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
178 changed files with 3327 additions and 44 deletions

View file

@ -0,0 +1,19 @@
<?php
if(!isset($_SESSION)){
session_name("opengamepanel_web");
session_start();
}
$avatar = '';
$valid_extensions = array('.jpeg', '.jpg', '.png', '.gif', '.bmp');
foreach($valid_extensions as $ext) {
if(file_exists($_SESSION['user_id'].$ext)){
$avatar = $_SESSION['user_id'].$ext;
break;
}
}
if($avatar == '') {
echo "images/default_avatar.png";
}else {
echo "upload/".$avatar;
}
?>

View file

@ -0,0 +1,14 @@
<?php
if(!isset($_SESSION)){
session_name("opengamepanel_web");
session_start();
}
$valid_extensions = array('.jpeg', '.jpg', '.png', '.gif', '.bmp');
if($_POST && $_POST['remove'] == "1") {
foreach($valid_extensions as $ext) {
if(file_exists($_SESSION['user_id'].$ext)){
unlink($_SESSION['user_id'].$ext);
}
}
}
?>

View file

@ -0,0 +1,45 @@
<?php
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif', 'bmp'); // valid extensions
$path = '';
$max_image_size = 2048; // in KB (2 MB = 2048 KB)
if(!isset($_SESSION)){
session_name("opengamepanel_web");
session_start();
}
foreach($valid_extensions as $ext) {
if(file_exists($_SESSION['user_id'].".".$ext)){
unlink($_SESSION['user_id'].".".$ext);
}
}
if(isset($_FILES['image']))
{
if($_FILES['image']['size'] > ($max_image_size*8192)) {
echo '<img id="avatar" src="themes/Obsidian/images/limit.png">';
} else {
//echo "test";
$tmp = $_FILES['image']['tmp_name'];
// get uploaded file's extension
$ext = strtolower(pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION));
// can upload same image using rand function
$final_image = $_SESSION['user_id'].".".$ext;
// check's valid format
if(in_array($ext, $valid_extensions))
{
$path = $path.strtolower($final_image);
if(move_uploaded_file($tmp,$path))
{
echo "<img id='avatar' src='themes/Obsidian/upload/".$path."?".time()."' />";
}
}
else
{
echo '<img id="avatar" src="themes/Obsidian/images/error.png">';
}
}
}
?>