143 lines
3.6 KiB
PHP
143 lines
3.6 KiB
PHP
<?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 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;
|
||
|
||
}
|
||
|
||
} |