diff --git a/admin.php b/admin.php index b206ca4..5894eaf 100644 --- a/admin.php +++ b/admin.php @@ -55,6 +55,61 @@ $tab = isset($_GET['tab']) ? $_GET['tab'] : 'project_logs'; // --- HANDLERS --- +// Handle Player Resource Management +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'admin_manage_player_resources') { + $target_type = $_POST['target_type']; // 'single', 'multiple', 'all' + $player_ids = []; + + if ($target_type === 'all') { + $stmt = $db->query("SELECT id FROM users"); + $player_ids = $stmt->fetchAll(PDO::FETCH_COLUMN); + } else { + $player_ids = isset($_POST['player_ids']) ? (array)$_POST['player_ids'] : []; + } + + $resource_id = (int)$_POST['resource_id']; + $amount = (int)$_POST['amount']; + $operation = $_POST['operation']; // 'add', 'remove' + + if ($operation === 'remove') { + $amount = -abs($amount); + } else { + $amount = abs($amount); + } + + if (!empty($player_ids) && $resource_id > 0 && $amount !== 0) { + $db->beginTransaction(); + try { + $stmt_check = $db->prepare("SELECT amount FROM user_resources WHERE user_id = ? AND resource_id = ?"); + $stmt_insert = $db->prepare("INSERT INTO user_resources (user_id, resource_id, amount) VALUES (?, ?, ?)"); + $stmt_update = $db->prepare("UPDATE user_resources SET amount = GREATEST(0, amount + ?) WHERE user_id = ? AND resource_id = ?"); + + foreach ($player_ids as $pid) { + $pid = (int)$pid; + $stmt_check->execute([$pid, $resource_id]); + $exists = $stmt_check->fetch(); + + if ($exists) { + $stmt_update->execute([$amount, $pid, $resource_id]); + } else { + $initial_qty = max(0, $amount); + $stmt_insert->execute([$pid, $resource_id, $initial_qty]); + } + } + $db->commit(); + header("Location: admin.php?tab=player&success=1"); + exit; + } catch (Exception $e) { + $db->rollBack(); + header("Location: admin.php?tab=player&error=db"); + exit; + } + } else { + header("Location: admin.php?tab=player&error=missing_fields"); + exit; + } +} + // Handle User Role Update if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_user_role') { $target_user_id = (int)$_POST['target_user_id']; @@ -217,7 +272,7 @@ if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["action"]) && $_POST[" $stmt = $db->prepare("UPDATE celestial_object_statuses SET name = ?, slug = ?, color = ?, description = ? WHERE id = ?"); $stmt->execute([$name, $slug, $color, $description, $id]); } else { - $stmt = $db->prepare("INSERT INTO celestial_object_statuses (name, slug, color, description) VALUES (?, ?, ?, ?)"); + $stmt = $db->prepare("INSERT INTO celestial_object_statuses (name, slug, color, description) VALUES (?, ?, ? , ?)"); $stmt->execute([$name, $slug, $color, $description]); } header("Location: admin.php?tab=statuses&success=1"); @@ -727,6 +782,9 @@ $guild_member_limit = 50; if ($tab === 'users') { $users_list = $db->query("SELECT id, username, email, role FROM users ORDER BY username ASC")->fetchAll(); +} elseif ($tab === 'player') { + $users_list = $db->query("SELECT id, username FROM users ORDER BY username ASC")->fetchAll(); + $resources_list = $db->query("SELECT id, name FROM game_resources ORDER BY name ASC")->fetchAll(); } elseif ($tab === 'objects') { $objects_list = $db->query("SELECT * FROM celestial_object_types ORDER BY name ASC")->fetchAll(); foreach ($objects_list as &$obj) { @@ -943,8 +1001,12 @@ elseif ($tab === "units") {