prepare("SELECT u.*, g.name as guild_name, g.owner_id as guild_owner_id
FROM users u
LEFT JOIN guilds g ON u.guild_id = g.id
WHERE u.id = ?");
$stmt->execute([$user_id]);
$user = $stmt->fetch();
$guild_id = $user['guild_id'];
$is_owner = ($guild_id && $user['id'] == $user['guild_owner_id']);
// Gérer la création de guilde
$error = '';
$success = '';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['create_guild']) && !$guild_id) {
$name = trim($_POST['guild_name']);
$tag = trim($_POST['guild_tag']);
if (empty($name) || empty($tag)) {
$error = "Le nom et le tag sont obligatoires.";
} else {
try {
$db->beginTransaction();
$stmt = $db->prepare("INSERT INTO guilds (name, tag, owner_id) VALUES (?, ?, ?)");
$stmt->execute([$name, $tag, $user_id]);
$new_guild_id = $db->lastInsertId();
$stmt = $db->prepare("UPDATE users SET guild_id = ? WHERE id = ?");
$stmt->execute([$new_guild_id, $user_id]);
$stmt = $db->prepare("INSERT INTO guild_members (guild_id, user_id, role) VALUES (?, ?, 'owner')");
$stmt->execute([$new_guild_id, $user_id]);
$db->commit();
header('Location: guilde.php');
exit;
} catch (Exception $e) {
$db->rollBack();
$error = "Erreur lors de la création : " . $e->getMessage();
}
}
}
// Récupérer les membres si en guilde
$members = [];
if ($guild_id) {
$stmt = $db->prepare("SELECT u.id, u.username, u.display_name, m.role, m.joined_at, l.name as level_name
FROM guild_members m
JOIN users u ON m.user_id = u.id
LEFT JOIN levels l ON u.level_id = l.id
WHERE m.guild_id = ?
ORDER BY CASE WHEN m.role = 'owner' THEN 1 WHEN m.role = 'officer' THEN 2 ELSE 3 END ASC, joined_at ASC");
$stmt->execute([$guild_id]);
$members = $stmt->fetchAll();
}
// Ressources pour le header (copié de index.php)
$resources = [];
$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([$user_id]);
$header_resources = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($header_resources as $hr) {
$resources[$hr["name"]] = [
"val" => (string)$hr["amount"],
"prod" => "",
"icon" => $hr["icon"] ?: "fa-gem",
"image" => $hr["image_url"]
];
}
?>