GLPI : générer automatiquement un ticket au changement de statut d’un ordinateur

GLPI : générer automatiquement un ticket au changement de statut d'un ordinateurSuite à une formation donnée sur GLPI dans cette bonne ville de Caen, l’un des stagiaires m’a demandé s’il était possible de générer un ticket au changement de statut d’un ordinateur. En l’occurrence, il s’agissait d’indiquer à ses équipes techniques qu’il fallait changer des ordinateurs obsolètes en créant des demandes automatiquement. Je n’ai pas trouvé de plugin pour réaliser cette basse besogne.

Un script PHP pour automatiser la création de tickets au changement de statut

Comme je n’ai pas le temps d’écrire un plugin (1), j’ai réalisé un script PHP à planifier sur le serveur GLPI avec cron.

<?php
/*
Copyright © Denis Szalkowski - 19/09/2017 - Version 1.0 - Licence GPL 2
L'objet de ce script est de générer un ticket automatiquement dans GLPI au changement de statut d'un ordinateur.
Dans l'exemple ci-dessous, il passe du statut "A changer" à "En attente de changement".
*/
// Vos paramètres de connexion à la base de données GLPI MySQL/Mariadb
$login='root';
$pwd='root';
$host='192.168.1.21';
$db='glpi';
// Tentative de connexion
try
{
 $dbh = new PDO("mysql:dbname=$db;host=$host",$login,$pwd);
 // Choix du codage 
 $dbh->exec("SET CHARACTER SET utf8") or die("Codage inexistant !");
}
// En cas d'erreur, fin du script
catch(PDOException $e)
{
 die ('Connection impossible : '.$e->message);
}
// Recherche d'un statut du type "En attente de changement" dans la table glpi_states
$sql="
 SELECT
 id,name
 FROM
 glpi_states
 WHERE
 name='En attente de changement'
";
$rows=$dbh->query($sql);
// Création du statut, dans l'hypothèse où aucun statut du type "En attente de changement" n'aurait été trouvé
if(!$rows->rowCount())
{ 
 $sql="
 INSERT INTO glpi_states(name,completename,date_mod,date_creation,is_recursive)
 VALUES('En attente de changement','En attente de changement',NOW(),NOW(),1);
 ";
 $dbh->exec($sql) or die("La création de l'état En attente de changement n'a pas pu se faire !");
 $state=$dbh->lastInsertId();
}
// Dans le cas contraire, on récupère le premier statut existant du type "En attente..." !
else
{
 $row=$rows->fetch(); 
 $state=$row['id'];
}
// Recherche des ordinateurs - à l'aide des expressions régulières - dont le statut est A changer.
$sql="
SELECT 
 c.id AS id,c.name AS name
FROM
 glpi_computers c
 INNER JOIN glpi_states s ON c.states_id=s.id
WHERE
 s.name = 'A changer'
";
$rows=$dbh->query($sql);
if(!$rows->rowCount())
{
 unset($dbh);
 exit;
};
// Création de la liaison Ordinateur-Ticket dans glpi_item_tickets
while($row=$rows->fetch())
{
 // Création de ticket dans glpi_tickets
 // type=1 représente une demande
 $computer=$row['id'];
 $libelle='Ordinateur '.$row['name'].' à changer';
 $sql="INSERT INTO glpi_tickets(name,date,date_mod,content,date_creation,type) VALUES('$libelle',NOW(),NOW(),'$libelle',NOW(),1);";
 $dbh->exec($sql) or die("Echouage à la création du ticket");
 // Récupération du dernier numéro de ticket créé, consécutif à l'insertion précédente
 $ticket=$dbh->lastInsertId();
 // Ajout dans la table liaison Ordinateur-Tickets glpi_item_tickets
 // items_id désigne, dans le cas présent, l'id de l'ordinateur
 $sql="INSERT INTO glpi_items_tickets(itemtype,items_id,tickets_id) VALUES('Computer',$computer,$ticket);";
 $dbh->exec($sql) or die("Echouage à la création de la liaison ticket-ordinateur");
 // Changement de statut de l'ordinateur passant à "En attente ..."
 $sql="UPDATE glpi_computers SET states_id=$state WHERE id=$computer;"; 
 $dbh->exec($sql) or die("La mise à jour du statut de l'ordinateur passant n'a pas pu se faire");
}
unset($dbh);
exit;
?>

(1) La documentation est d’ailleurs assez pathétique !

GLPI / ,

deneme bonusu veren siteler casino siteleri betdenemebonusu.com bahis siteleri Ev eşyası depolama Depolama Şehirlerarası evden eve nakliyat Evden eve nakliyat Eşya depolama yurtdışına ev taşıma Türkiye'den Almanya'ya ev taşıma zati eşya tasimaciligi uluslararasi zati eşya tasimaciligi eşya depolama şehirler arası nakliyat asansörlü nakliyat greatplay.net güvenilir online bahis siteler 2022 jetbahis Rexbet hovarda mobilbahis güncel adres sartsız Deneme Bonus sekabet maltcasino güncel adres> pinbahis100.com betduman.com olabahis.top سایت شرط بندی shartkade.com 1xbet-mobil.com beykoz evden eve nakliyat ataşehir evden eve nakliyat şişli evden eve nakliyat istanbul evden eve nakliyat
teens porn videos free sex xxx sexy videos