134 lines
6.4 KiB
PHP
134 lines
6.4 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../db/config.php';
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
$db = db();
|
|
|
|
// Fetch Project Logo
|
|
$project_logo = $db->query("SELECT value FROM site_settings WHERE `key` = 'project_logo'")->fetchColumn() ?: 'assets/images/logo_placeholder.png';
|
|
|
|
// Fetch Header Data if not already in session or if we want fresh data
|
|
if (isset($_SESSION['user_id'])) {
|
|
$stmt = $db->prepare("SELECT u.role, u.display_name, u.username, u.guild_id, l.name as level_raw,
|
|
u.selected_title_id, u.selected_badge_id,
|
|
t.name as title_name,
|
|
b.name as badge_name, b.image_url as badge_image,
|
|
g.name as guild_name, g.tag as guild_tag
|
|
FROM users u
|
|
LEFT JOIN levels l ON u.level_id = l.id
|
|
LEFT JOIN titles t ON u.selected_title_id = t.id
|
|
LEFT JOIN badges b ON u.selected_badge_id = b.id
|
|
LEFT JOIN guilds g ON u.guild_id = g.id
|
|
WHERE u.id = ?");
|
|
$stmt->execute([$_SESSION['user_id']]);
|
|
$u_data = $stmt->fetch();
|
|
|
|
if ($u_data) {
|
|
$_SESSION['user_role'] = $u_data['role'] ?? 'user';
|
|
$_SESSION['display_name'] = $u_data['display_name'] ?: $u_data['username'];
|
|
$level_num = (int)filter_var($u_data['level_raw'] ?? '0', FILTER_SANITIZE_NUMBER_INT);
|
|
$_SESSION['level'] = $level_num;
|
|
$_SESSION['guild_id'] = $u_data['guild_id'];
|
|
$_SESSION['selected_title_name'] = $u_data['title_name'];
|
|
$_SESSION['selected_badge_name'] = $u_data['badge_name'];
|
|
$_SESSION['selected_badge_image'] = $u_data['badge_image'];
|
|
$_SESSION['guild_name'] = $u_data['guild_name'];
|
|
$_SESSION['guild_tag'] = $u_data['guild_tag'];
|
|
}
|
|
}
|
|
|
|
// Fetch Resources
|
|
$resources = [];
|
|
if (isset($_SESSION['user_id'])) {
|
|
$stmt = $db->prepare("
|
|
SELECT gr.*, COALESCE(ur.amount, 0) as amount
|
|
FROM game_resources gr
|
|
LEFT JOIN user_resources ur ON gr.id = ur.resource_id AND ur.user_id = ?
|
|
WHERE gr.show_in_header = 1
|
|
ORDER BY CASE
|
|
WHEN gr.name LIKE 'Crédit%' THEN 1
|
|
WHEN gr.name LIKE 'Matériau%' THEN 2
|
|
WHEN gr.name LIKE 'Energie%' THEN 3
|
|
WHEN gr.name LIKE 'Donnée%' THEN 4
|
|
ELSE 5
|
|
END ASC, gr.name ASC
|
|
");
|
|
$stmt->execute([$_SESSION['user_id']]);
|
|
$header_resources = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
foreach($header_resources as $hr) {
|
|
$resources[$hr["name"]] = [
|
|
"val" => (string)$hr["amount"],
|
|
"icon" => $hr["icon"] ?: "fa-gem",
|
|
"image" => $hr["image_url"]
|
|
];
|
|
}
|
|
} else {
|
|
$header_resources = $db->query("SELECT * FROM game_resources WHERE show_in_header = 1 ORDER BY CASE WHEN name LIKE 'Crédit%' THEN 1 WHEN name LIKE 'Matériau%' THEN 2 WHEN name LIKE 'Energie%' THEN 3 WHEN name LIKE 'Donnée%' THEN 4 ELSE 5 END ASC, name ASC")->fetchAll(PDO::FETCH_ASSOC);
|
|
foreach($header_resources as $hr) {
|
|
$resources[$hr["name"]] = ["val" => "0", "icon" => $hr["icon"] ?: "fa-gem", "image" => $hr["image_url"]];
|
|
}
|
|
}
|
|
?>
|
|
<header id="top-bar">
|
|
<!-- LEFT SECTION: LOGO & NAV -->
|
|
<div class="header-section left-section">
|
|
<div class="logo-wrapper">
|
|
<a href="index.php">
|
|
<img src="<?php echo htmlspecialchars($project_logo); ?>?v=<?php echo time(); ?>" alt="Project Logo">
|
|
</a>
|
|
</div>
|
|
<nav class="nav-wrapper">
|
|
<a href="index.php" class="nav-btn"><i class="fa-solid fa-earth-europe"></i> NEXUS</a>
|
|
<?php if (isset($_SESSION["user_id"])): ?>
|
|
<button type="button" class="nav-btn" onclick="if(document.getElementById('profileModal')){document.getElementById('profileModal').style.display='flex'}else{window.location.href='index.php'}">
|
|
<i class="fa-solid fa-id-card"></i> PROFIL
|
|
</button>
|
|
<a href="guilde.php" class="nav-btn">
|
|
<i class="fa-solid fa-building-shield"></i> <?php echo empty($_SESSION["guild_id"]) ? "GUILDE" : "MA GUILDE"; ?>
|
|
</a>
|
|
<?php endif; ?>
|
|
</nav>
|
|
</div>
|
|
|
|
<!-- CENTER SECTION: RESOURCES -->
|
|
<div class="header-section center-section">
|
|
<div class="resource-scroll">
|
|
<?php foreach($resources as $name => $res): ?>
|
|
<div class="res-item" title="<?php echo htmlspecialchars($name); ?>">
|
|
<div class="res-icon">
|
|
<?php if (!empty($res["image"])): ?>
|
|
<img src="<?php echo htmlspecialchars($res["image"]); ?>?v=<?php echo time(); ?>">
|
|
<?php else: ?>
|
|
<i class="fa-solid <?php echo htmlspecialchars($res["icon"]); ?>"></i>
|
|
<?php endif; ?>
|
|
</div>
|
|
<div class="res-details">
|
|
<span class="res-name-mini"><?php echo htmlspecialchars($name); ?></span>
|
|
<span class="res-val"><?php echo htmlspecialchars($res["val"]); ?></span>
|
|
</div>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- RIGHT SECTION: AUTH & ACCOUNT -->
|
|
<div class="header-section right-section">
|
|
<div class="auth-wrapper">
|
|
<?php if (isset($_SESSION["user_id"])): ?>
|
|
<div class="welcome-text">Bienvenue, <span class="username">@<?php echo htmlspecialchars($_SESSION["display_name"] ?? $_SESSION["username"]); ?></span></div>
|
|
<div class="auth-links">
|
|
<a href="project_log.php"><i class="fa-solid fa-clipboard-list"></i> Journal</a>
|
|
<a href="account.php"><i class="fa-solid fa-user-gear"></i> Compte</a>
|
|
<a href="auth.php?logout=1" class="logout-link"><i class="fa-solid fa-right-from-bracket"></i> Quitter</a>
|
|
</div>
|
|
<?php else: ?>
|
|
<div class="auth-links">
|
|
<a href="auth.php?page=login"><i class="fa-solid fa-right-to-bracket"></i> Connexion</a>
|
|
<a href="auth.php?page=register"><i class="fa-solid fa-user-plus"></i> S'inscrire</a>
|
|
<a href="project_log.php"><i class="fa-solid fa-clipboard-list"></i> Journal</a>
|
|
</div>
|
|
<?php endif; ?>
|
|
</div>
|
|
</div>
|
|
</header>
|