start(); /// TODO try to remove them if possible include_once (GLPI_ROOT . "/inc/db.function.php"); // Standard includes include_once (GLPI_ROOT . "/inc/config.php"); //disbled errors =>pour le variable res (Ajax) ini_set('display_errors', 0); Session::checkLoginUser(); global $DB; // === Add picklist item === function add($data) { global $DB; $name = $data['type'] ?? ''; $value = $data['value'] ?? ''; $created_by = Session::getLoginUserID(); if (empty($name) || empty($value)) { echo json_encode(['status' => 'error', 'message' => 'Type et valeur sont requis.']); exit; } $stmt = $DB->prepare("INSERT INTO picklist (name, value, created_on, created_by) VALUES (?, ?, NOW(), ?)"); $stmt->bind_param("ssi", $name, $value, $created_by); if ($stmt->execute()) { echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'error', 'message' => 'Erreur lors de l’insertion.']); } exit; } // === Update picklist item === function update($data) { global $DB; $id = intval($data['id'] ?? 0); $name = htmlentities($data['type'] ?? ''); $value = htmlentities($data['value'] ?? ''); if (!$id || empty($name) || empty($value)) { echo json_encode(['status' => 'error', 'message' => 'ID, type et valeur sont requis.']); exit; } $stmt = $DB->prepare("UPDATE picklist SET name = ?, value = ? WHERE id = ?"); $stmt->bind_param("ssi", $name, $value, $id); if ($stmt->execute()) { echo json_encode(['status' => 'success']); } else { echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la mise à jour.']); } exit; } // === Filter list === function filtre($type) { global $DB; $filters = []; if ($type && $type != 'all') { $filters[] = "en.name = '" . $DB->escape($type) . "'"; } if (!empty($_GET['valeur'])) { $valeur = $DB->escape($_GET['valeur']); $filters[] = "en.value LIKE '%$valeur%'"; } $sql = count($filters) > 0 ? " WHERE " . implode(" AND ", $filters) : ""; $query = "SELECT en.id, en.name, en.value, en.created_on, CONCAT(glpi_users.realname, ' ', glpi_users.firstname) as created_by FROM picklist AS en LEFT JOIN glpi_users ON en.created_by = glpi_users.id $sql"; $result = $DB->query($query); $res = []; if ($result && $result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $res[] = $row; } } echo json_encode($res, JSON_UNESCAPED_UNICODE); exit; } // === Delete picklist item === function delete_picklist($id) { global $DB; $id = intval($id); $stmt = $DB->prepare("DELETE FROM picklist WHERE id = ?"); $stmt->bind_param("i", $id); if ($stmt->execute()) { echo json_encode(['status' => 'success', 'message' => 'Élément supprimé.']); } else { echo json_encode(['status' => 'error', 'message' => 'Erreur lors de la suppression.']); } exit; } if(isset($_POST)){ switch ($_GET['action']) { case "add": add($_POST); break; case "update": update($_POST); break; case "delete": $id = $_POST['id'] ?? 0; delete_picklist($id); break; case "filtre": header('Content-type: application/json; charset=utf-8'); $res = filtre($_GET['type']); echo json_encode($res,JSON_UNESCAPED_UNICODE); break; } }