prepare( "SELECT m.cl_scmanufactures_id, m.cl_scmanufactures_name, v.cl_scvaisseaux_id, v.cl_scvaisseaux_name FROM tbl_scvaisseaux v INNER JOIN tbl_scmanufactures m ON m.cl_scmanufactures_id = v.cl_scvaisseaux_manufacture_id WHERE m.cl_scmanufactures_id = :manufacture_id AND v.cl_scvaisseaux_id = :ship_id LIMIT 1" ); $stmt->execute([ 'manufacture_id' => $manufactureId, 'ship_id' => $shipId, ]); $relation = $stmt->fetch(); return $relation ?: null; } // Handle POST actions if ($_SERVER['REQUEST_METHOD'] === 'POST') { $submitted_csrf = $_POST['csrf_token'] ?? ''; if (!auth_validate_csrf($submitted_csrf)) { auth_flash_set('error', 'Jeton CSRF invalide.'); header('Location: scpreset.php'); exit; } $action = $_POST['action'] ?? ''; // Add preset if ($action === 'add_preset') { $manufacture_id = (int)($_POST['manufacture_id'] ?? 0); $ship_id = (int)($_POST['ship_id'] ?? 0); $description = trim($_POST['description'] ?? ''); $link = trim($_POST['link'] ?? ''); $creator = $current_session_user ?: 'Inconnu'; $relation = find_preset_ship_relation($db, $manufacture_id, $ship_id); if ($relation && $link !== '') { try { $stmt = $db->prepare("INSERT INTO tbl_scpreset ( cl_scpreset_manufacture_id, cl_scpreset_vaisseau_id, cl_scpreset_name, cl_scpreset_manufacturer, cl_scpreset_description, cl_scpreset_link, cl_scpreset_creator ) VALUES ( :manufacture_id, :ship_id, :name, :manufacturer, :description, :link, :creator )"); $stmt->execute([ 'manufacture_id' => $relation['cl_scmanufactures_id'], 'ship_id' => $relation['cl_scvaisseaux_id'], 'name' => $relation['cl_scvaisseaux_name'], 'manufacturer' => $relation['cl_scmanufactures_name'], 'description' => $description, 'link' => $link, 'creator' => $creator, ]); auth_flash_set('success', 'Preset ajouté avec succès.'); } catch (PDOException $e) { auth_flash_set('error', 'Erreur lors de l\'ajout : ' . $e->getMessage()); } } else { auth_flash_set('error', 'Veuillez sélectionner une manufacture, un vaisseau valide et renseigner le lien.'); } header('Location: scpreset.php'); exit; } // Update preset if ($action === 'update_preset') { $preset_id = (int)($_POST['preset_id'] ?? 0); $manufacture_id = (int)($_POST['manufacture_id'] ?? 0); $ship_id = (int)($_POST['ship_id'] ?? 0); $description = trim($_POST['description'] ?? ''); $link = trim($_POST['link'] ?? ''); $relation = find_preset_ship_relation($db, $manufacture_id, $ship_id); if ($preset_id > 0 && $relation && $link !== '') { try { $stmt = $db->prepare("UPDATE tbl_scpreset SET cl_scpreset_manufacture_id = :manufacture_id, cl_scpreset_vaisseau_id = :ship_id, cl_scpreset_name = :name, cl_scpreset_manufacturer = :manufacturer, cl_scpreset_description = :description, cl_scpreset_link = :link WHERE cl_scpreset_id = :id"); $stmt->execute([ 'manufacture_id' => $relation['cl_scmanufactures_id'], 'ship_id' => $relation['cl_scvaisseaux_id'], 'name' => $relation['cl_scvaisseaux_name'], 'manufacturer' => $relation['cl_scmanufactures_name'], 'description' => $description, 'link' => $link, 'id' => $preset_id, ]); auth_flash_set('success', 'Preset mis à jour.'); } catch (PDOException $e) { auth_flash_set('error', 'Erreur lors de la mise à jour : ' . $e->getMessage()); } } else { auth_flash_set('error', 'Données invalides : sélectionne une manufacture, un vaisseau valide et un lien.'); } header('Location: scpreset.php'); exit; } // Delete preset if ($action === 'delete_preset') { $preset_id = (int)($_POST['preset_id'] ?? 0); if ($preset_id > 0) { $stmt = $db->prepare("DELETE FROM tbl_scpreset WHERE cl_scpreset_id = :id"); $stmt->execute(['id' => $preset_id]); auth_flash_set('success', 'Preset supprimé.'); } else { auth_flash_set('error', 'ID de preset invalide.'); } header('Location: scpreset.php'); exit; } } $stmt_mans = $db->query("SELECT * FROM tbl_scmanufactures ORDER BY cl_scmanufactures_name ASC"); $manufactures = $stmt_mans->fetchAll(); $stmt_ships = $db->query("SELECT v.cl_scvaisseaux_id, v.cl_scvaisseaux_name, v.cl_scvaisseaux_manufacture_id, m.cl_scmanufactures_name FROM tbl_scvaisseaux v INNER JOIN tbl_scmanufactures m ON m.cl_scmanufactures_id = v.cl_scvaisseaux_manufacture_id ORDER BY m.cl_scmanufactures_name ASC, v.cl_scvaisseaux_name ASC"); $ships = $stmt_ships->fetchAll(); $manufacture_lookup = []; $ships_by_manufacture = []; $ships_by_id = []; $ship_lookup = []; foreach ($manufactures as $manufacture) { $manufacture_lookup[normalize_catalog_label($manufacture['cl_scmanufactures_name'])] = (int)$manufacture['cl_scmanufactures_id']; $ships_by_manufacture[(int)$manufacture['cl_scmanufactures_id']] = []; } foreach ($ships as $ship) { $manufactureId = (int)$ship['cl_scvaisseaux_manufacture_id']; $shipId = (int)$ship['cl_scvaisseaux_id']; $shipName = $ship['cl_scvaisseaux_name']; $manufacturerName = $ship['cl_scmanufactures_name']; $ships_by_manufacture[$manufactureId][] = [ 'id' => $shipId, 'name' => $shipName, ]; $ships_by_id[$shipId] = [ 'id' => $shipId, 'name' => $shipName, 'manufacture_id' => $manufactureId, 'manufacturer_name' => $manufacturerName, ]; $ship_lookup[$manufactureId . '|' . normalize_catalog_label($shipName)] = $shipId; } $stmt_list = $db->query("SELECT p.*, m.cl_scmanufactures_name AS relation_manufacturer_name, v.cl_scvaisseaux_name AS relation_ship_name, v.cl_scvaisseaux_manufacture_id AS relation_ship_manufacture_id FROM tbl_scpreset p LEFT JOIN tbl_scmanufactures m ON m.cl_scmanufactures_id = p.cl_scpreset_manufacture_id LEFT JOIN tbl_scvaisseaux v ON v.cl_scvaisseaux_id = p.cl_scpreset_vaisseau_id ORDER BY COALESCE(m.cl_scmanufactures_name, p.cl_scpreset_manufacturer) ASC, COALESCE(v.cl_scvaisseaux_name, p.cl_scpreset_name) ASC"); $presets = $stmt_list->fetchAll(); foreach ($presets as &$preset) { $resolvedManufactureId = (int)($preset['cl_scpreset_manufacture_id'] ?? 0); if ($resolvedManufactureId <= 0) { $manufacturerKey = normalize_catalog_label((string)($preset['cl_scpreset_manufacturer'] ?? '')); if ($manufacturerKey !== '' && isset($manufacture_lookup[$manufacturerKey])) { $resolvedManufactureId = $manufacture_lookup[$manufacturerKey]; } } $resolvedShipId = (int)($preset['cl_scpreset_vaisseau_id'] ?? 0); if ($resolvedShipId <= 0 && $resolvedManufactureId > 0) { $shipKey = $resolvedManufactureId . '|' . normalize_catalog_label((string)($preset['cl_scpreset_name'] ?? '')); if (isset($ship_lookup[$shipKey])) { $resolvedShipId = $ship_lookup[$shipKey]; } } $displayManufacturer = $preset['relation_manufacturer_name'] ?: $preset['cl_scpreset_manufacturer']; $displayName = $preset['relation_ship_name'] ?: $preset['cl_scpreset_name']; if ($resolvedShipId > 0 && isset($ships_by_id[$resolvedShipId])) { $displayName = $ships_by_id[$resolvedShipId]['name']; $displayManufacturer = $ships_by_id[$resolvedShipId]['manufacturer_name']; $resolvedManufactureId = $ships_by_id[$resolvedShipId]['manufacture_id']; } $preset['resolved_manufacture_id'] = $resolvedManufactureId; $preset['resolved_ship_id'] = $resolvedShipId; $preset['display_manufacturer'] = $displayManufacturer; $preset['display_name'] = $displayName; } unset($preset); ?> Presets Vaisseaux | R.E.A.C.T. Admin

R.E.A.C.T. Ship Presets

Niveau d\'accès :

Nouveau Preset

Aucune manufacture n'est disponible. Ajoute d'abord une manufacture.

Gérer les manufactures

Aucun vaisseau n'est disponible. Ajoute d'abord au moins un vaisseau lié à une manufacture.

Gérer les vaisseaux
Le vaisseau affiché dépend de la manufacture choisie. Le nom et la manufacture du preset seront remplis automatiquement.

Liste des Presets

Vaisseau / Manufacture Description Lien Actions
Aucun preset enregistré.

Par
Consulter le lien