14
Plugin Reports Tutoriel v1.1 Page 1 GLPI v0.72.4 Plugin Reports Créer un rapport

GLPI©er_un... · 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

  • Upload
    lyxuyen

  • View
    344

  • Download
    6

Embed Size (px)

Citation preview

Plugin Reports – Tutoriel v1.1 Page 1

GLPI v0.72.4

Plugin Reports Créer un rapport

Plugin Reports – Tutoriel v1.1 Page 2

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 3

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 4

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 5

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 6

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 7

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 8

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 9

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 10

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 11

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 12

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 13

2. Résultat:

Plugin Reports – Tutoriel v1.1 Page 14

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.