Files
MYSOPHAL/ajax/picklist.php
2025-08-07 13:15:31 +01:00

143 lines
3.6 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
if (!defined('GLPI_ROOT')) {
define('GLPI_ROOT', dirname(__DIR__));
}
include_once GLPI_ROOT . '/inc/based_config.php';
// Init Timer to compute time of display
$TIMER_DEBUG = new Timer();
$TIMER_DEBUG->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 linsertion.']);
}
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;
}
}