Sie sind auf Seite 1von 14

GLPI v0.72.

Plugin Reports
Créer un rapport

Plugin Reports – Tutoriel v1.1 Page 1


Sommaire
Introduction : ...................................................................................................................................................... 3
Création des fichiers : ........................................................................................................................................ 4
1. Le fichier « historiquedescontrats.php » : ............................................................................................... 5
1) Déclarations obligatoires: ................................................................................................................ 5
2) Instanciation: ................................................................................................................................... 6
3) Critères de recherche: ...................................................................................................................... 7
4) Déclaration des colonnes: ................................................................................................................ 8
5) Requête : .......................................................................................................................................... 9
6) Exécution: ...................................................................................................................................... 10
2. Les fichiers de langue: .......................................................................................................................... 11
Fichier final: ..................................................................................................................................................... 12
1. Code : ............................................................................................................................................. 12
2. Résultat: ......................................................................................................................................... 13
Conclusion ....................................................................................................................................................... 14

Plugin Reports – Tutoriel v1.1 Page 2


Introduction :

Le plugin Reports de GLPI permet, via l’ajout d’un fichier PHP et d’un ou plusieurs fichiers de
langue associés, de créer facilement des rapports. Ce tutoriel a pour but d’expliquer la méthode de création
d’un rapport.

Plugin Reports – Tutoriel v1.1 Page 3


Création des fichiers :

Prenons l’exemple d’un rapport qui dresserait la liste des ordinateurs sous contrat avec une date de
début d’utilisation paramétrable, nous l’appellerons « historiquedescontrats ». Il sera disponible en français
et en anglais.

Les fichiers nécessaires sont donc :

+ historiquedescontrats

 historiquedescontrats.php
 historiquedescontrats.fr_FR.php
 historiquedescontrats.en_GB.php

Le fichier principal est historiquedescontrats.php, c’est lui qui contient la requête à exécuter. Pour
fonctionner, il a besoin d’au moins un fichier de langue. Dans notre cas, nous en avons deux.

Tous ces fichiers sont placés dans un dossier qui porte le même nom que le rapport. Ce qui nous donne
l’arborescence suivante :

Plugin Reports – Tutoriel v1.1 Page 4


1. Le fichier « historiquedescontrats.php » :

1) Déclarations obligatoires:

Ces déclarations sont nécessaires à GLPI. Elles permettent d’initialiser les variables globales et
d’inclure le fichier de configuration.

Code :

$NEEDED_ITEMS = array("search");

$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;

define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

Plugin Reports – Tutoriel v1.1 Page 5


2) Instanciation:

Le rapport doit être instancié pour pourvoir hériter des méthodes déjà implémentées.

Code :

$report = new AutoReport(‘historiquedescontrats’);

Plugin Reports – Tutoriel v1.1 Page 6


3) Critères de recherche:

Le plugin Reports permet d’ajouter des critères de recherche pour un rapport donné. Ces critères
doivent être déclarés avant la requête.

Code (pour un seul champ):

new DateIntervalCriteria($report,"glpi_contracts.begin_date");

$report->displayCriteriasForm($_SERVER['PHP_SELF']);

Code (pour un plusieurs champs):

new DateIntervalCriteria($report,"glpi_contracts.begin_date");
new StringCriteria($report,"name");

$report->displayCriteriasForm($_SERVER['PHP_SELF']);

Il existe plusieurs critères, en voici une liste non exhaustive :

- DateIntervalCriteria (pour un intervalle de date)


- StringCriteria (pour un champ texte)
- IntegerCriteria (pour un champ numérique)
- TimeIntervalCriteria (pour un intervalle d’heure)
- PriorityCriteria (priorités des tickets)
- TicketStatusCriteria (status des tickets)
- StatusCriteria (status des items)
- …

Plugin Reports – Tutoriel v1.1 Page 7


4) Déclaration des colonnes:

Il est nécessaire de déclarer toutes les colonnes qui seront retournées par la requête. Ces colonnes
doivent avoir le même nom que celui utilisé dans la requête. Si la colonne de la table n’a pas un nom assez
explicite, il peut être utile de la renommer via un alias (SELECT monChamp AS champ)

Code (avec critères) :

if ($report->criteriasValidated())
{
$report->setColumnsNames(array( 'serial' => "Numéro de série",
'name' => 'Nom',
'ID' => 'ID'));

Code (sans critère) :

$report->setColumnsNames(array( 'serial' => "Numéro de série",


'name' => 'Nom',
'ID' => 'ID'));

Plugin Reports – Tutoriel v1.1 Page 8


5) Requête :

La requête est écrite tout simplement sous la forme d’une chaîne de caractères associée à une
variable.

Code (attention à la gestion des critères) :

$query = "SELECT `glpi_computers`.serial , `glpi_computers`.name , `glpi_computers`.ID


FROM glpi_computers
WHERE `glpi_computers`.ID IN
(
SELECT `glpi_contract_device`.`FK_device`
FROM glpi_contract_device INNER JOIN `glpi_contracts` ON
glpi_contract_device.FK_contract = `glpi_contracts`.ID ";

// La ligne ci-dessous est nécessaire lors de l’utilisation de critères


$query .= $report->addSqlCriteriasRestriction("WHERE");

$query .= " AND `glpi_contract_device`.device_type=1


)";

Les critères sont intégrés à la requête de manière automatique grâce à la fonction


addSqlCriteriasRestriction("WHERE");

Plugin Reports – Tutoriel v1.1 Page 9


6) Exécution:

Ces deux lignes permettent d’enregistrer la requête dans l’attribut de la classe et d’exécuter la
requête.

Code (avec critères) :

$report->setSqlRequest($query);
$report->execute();
}

Remarque : L’accolade fermante est présente pour fermer celle qui a été ouverte au paragraphe 5-
Déclaration des colonnes

Code (sans critère) :

$report->setSqlRequest($query);
$report->execute();

Plugin Reports – Tutoriel v1.1 Page 10


2. Les fichiers de langue:

Les fichiers de langue doivent contenir au moins cette ligne, elle indique le nom du rapport. Il faut
ajouter ensuite autant de ligne qu’il y a de texte traductible dans le rapport.

testcount.fr_FR.php

$LANG['plugin_reports']["historiquedescontrats"][1]=" MIPIH - Liste des machines sous contrats (Paramétrable)";

testcount.en_GB.php

$LANG['plugin_reports']["historiquedescontrats"][1]=" MIPIH - Computers with contract (With params)";

Il est possible d’ajouter d’autres lignes qui seront susceptibles d’être traduites en plusieurs langues.

Plugin Reports – Tutoriel v1.1 Page 11


Fichier final:

1. Code :

Voici le fichier tel qu’il doit être à la fin du tutoriel. Ce fichier prend en compte les critères utilisés
tout au long du tutoriel.

Code :

$NEEDED_ITEMS = array("search");

$USEDBREPLICATE = 1;
$DBCONNECTION_REQUIRED = 0;

define('GLPI_ROOT', '../../../..');
include (GLPI_ROOT . "/inc/includes.php");

$report = new AutoReport(‘historiquedescontrats’);

if ($report->criteriasValidated())
{
$report->setColumnsNames(array( 'serial' => "Numéro de série",
'name' => 'Nom',
'ID' => 'ID'));

$query = "SELECT `glpi_computers`.serial , `glpi_computers`.name , `glpi_computers`.ID


FROM glpi_computers
WHERE `glpi_computers`.ID IN
(
SELECT `glpi_contract_device`.`FK_device`
FROM glpi_contract_device INNER JOIN `glpi_contracts` ON
glpi_contract_device.FK_contract = `glpi_contracts`.ID ";
$query .= $report->addSqlCriteriasRestriction("WHERE");
$query .= " AND `glpi_contract_device`.device_type=1
)";

$report->setSqlRequest($query);
$report->execute();
}

Plugin Reports – Tutoriel v1.1 Page 12


2. Résultat:

Plugin Reports – Tutoriel v1.1 Page 13


Conclusion

Le tutoriel est terminé, il a permit d’expliquer comment utiliser le plugin Reports afin de pouvoir
créer des rapports personnalisés. Il faut noter que GLPI est en constante évolution et que par conséquent, le
plugin ainsi que ses méthodes sont susceptibles de changer.

Plugin Reports – Tutoriel v1.1 Page 14