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

91 lines
2.7 KiB
PHP

<?php
if (!defined('GLPI_ROOT')) {
define('GLPI_ROOT', dirname(__DIR__));
}
include_once GLPI_ROOT . '/inc/based_config.php';
include_once GLPI_ROOT . "/inc/db.function.php";
include_once GLPI_ROOT . "/inc/config.php";
ini_set('display_errors', 0);
Session::checkLoginUser();
global $DB;
function get_users_with_supervisor($old_supervisor_id) {
global $DB;
$users = [];
$query = "SELECT id FROM glpi_users WHERE users_id_supervisor = ?";
$stmt = $DB->prepare($query);
$stmt->bind_param("i", $old_supervisor_id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
$users[] = $row['id'];
}
return $users;
}
function update_supervisor($users_ids, $new_id) {
global $DB;
if (empty($users_ids)) {
return false;
}
$ids_placeholders = implode(',', array_fill(0, count($users_ids), '?'));
$types = str_repeat('i', count($users_ids) + 1);
$params = array_merge([$new_id], $users_ids);
$query = "UPDATE glpi_users SET users_id_supervisor = ? WHERE id IN ($ids_placeholders)";
$stmt = $DB->prepare($query);
$stmt->bind_param($types, ...$params);
return $stmt->execute();
}
function add_tracking($users_ids, $old_id, $new_id) {
global $DB;
$current_user_id = $_SESSION['glpiID'] ?? 0;
$current_user_name = 'Script';
if ($current_user_id > 0) {
$query_user = "SELECT CONCAT(firstname, ' ', realname) AS fullname FROM glpi_users WHERE id = ?";
$stmt_user = $DB->prepare($query_user);
$stmt_user->bind_param("i", $current_user_id);
$stmt_user->execute();
$result_user = $stmt_user->get_result();
if ($row_user = $result_user->fetch_assoc()) {
$current_user_name = $row_user['fullname'];
}
}
foreach ($users_ids as $user_id) {
$query_log = "INSERT INTO glpi_logs (itemtype, items_id, date_mod, user_name, id_search_option, old_value, new_value)
VALUES ('User', ?, NOW(), ?, 99, ?, ?)";
$stmt_log = $DB->prepare($query_log);
$stmt_log->bind_param("isss", $user_id, $current_user_name, $old_id, $new_id);
$stmt_log->execute();
}
}
if (isset($_POST) && $_GET['action'] === "update") {
$old_supervisor_id = (int)$_GET['oldsupervisor'];
$new_supervisor_id = (int)$_GET['newsupervisor'];
$users_to_update = get_users_with_supervisor($old_supervisor_id);
if (!empty($users_to_update)) {
$update_success = update_supervisor($users_to_update, $new_supervisor_id);
add_tracking($users_to_update, $old_supervisor_id, $new_supervisor_id);
echo json_encode(['success' => $update_success], JSON_UNESCAPED_UNICODE);
} else {
echo json_encode(['success' => false, 'message' => 'Aucun utilisateur trouvé.'], JSON_UNESCAPED_UNICODE);
}
}