Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?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;
- ?>
Add Comment
Please, Sign In to add comment