You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2024-02-26 12:16:31

Mickado
Member
Registered: 2023-12-06
Posts: 18

Affichage de résultat de requete SQL dans le dashboard

Bonjour,
Je suis apprenti et je découvre GLPI.

J'ai pour objectif d'afficher l'historique des lieux ou a été assigné un système (gestion de stock, genre serveur1 a été déplacer du lieu "stock" a "accueil")

Pour cela j'ai donc commencé sans réellement savoir si c'était la bonne voie a vouloir ressortir avec une requête faite dans la base de donné (table glpi_logs) toute les info.

Ce que j'ai réussi a faire avec ma requête je ressort donc tout les déplacements de lieux effectuer dans glpi sur les système.

Maintenant que cette requête fonctionne je voulais savoir si c'était possible d'intégrer cette requête SQL à l'interface native de GLPI ou à mycustomview pour pouvoir ensuite faire des filtre dessus (afficher uniquement l'historique des lieux d'un systèmes spécifique)

Merci d'avance !

Last edited by Mickado (2024-02-26 12:20:05)

Offline

#2 2024-02-26 12:50:49

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

à mon avis le mieux est le plugin "reports".

il vous permet d'afficher des paramétres : date, interval de date, texte, type, entité, intitulé, ...

et d'afficher dans un tableau les resultats de votre requete  avec les filtres que vous avez définis.

comme c'est l'interface native vous pouvez trier, exporter, gérer les profils autorisés, et même gérer les traduction dans les langues etrangères.


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#3 2024-02-26 13:46:33

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

J'ai commencer a regarder le plugin report ce matin le problème c'est que les rapport me semblent fixes.
Par exemple disons que je fait un rapport avec comme source ma requête SQL qui ressort tout l'historique des mouvement des systèmes dans les lieux.
Sur le rapport je pourrais trié parmi l'historique des lieux uniquement les mouvement a destination du lieux "accueil" ?
(j'aimerais eviter de devoir faire un rapport pour les mouvement a destination de "acceuil", un autre pour les mouvement sortant de "acceuil" ect ... pour tout mes lieux)

Last edited by Mickado (2024-02-26 13:48:20)

Offline

#4 2024-02-26 14:05:02

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

En regardant avec les rapport par défaut il me semble que se soit impossible d'en faire des log sur lesquelles on peut faire du filtrage

Last edited by Mickado (2024-02-26 14:05:45)

Offline

#5 2024-02-26 15:31:02

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

voilà comment vous pouvez filtrer par lieu.

mais il faudra peut être 2 rapports : un pour entrant et un pour sortant.

$report = new PluginReportsAutoReport(__('Mon_rapport_report_title', 'reports'));
//les 2 lignes suivantes affichent un selecteur de lieu
   
$location = new PluginReportsLocationCriteria($report, 'location', _n('Location', 'Locations', 2));
$location->setSqlField("`glpi_locations`.`id`");
  // si vous avez un lien sur la table locations dans votre requête;


$report->displayCriteriasForm();


if ($report->criteriasValidated()) {

   $query = "SELECT *
             FROM  glpi_matable
              ".
                       $report->addSqlCriteriasRestriction() ;    cette ligne ajoute un critère dans la WhereClause avec l' id du  lieu choisi plus haut

//ajoutez peut être un "order by"

   $report->setSqlRequest($query);
   $report->execute();
} else {
   Html::footer();
}


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#6 2024-02-26 16:21:57

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

le problème si je me trompe pas c'est que pour avoir l'entrant et sortant d'un autre lieu il faut retourner codé les rapport en php et changer l'id du lieu. Je cherche une solution viable pour des utilisateurs donc sans avoir a recoder des truc pour pour avoir des nouveau rapport et les utilisateur de GLPI n'auront pas accès au répertoire interne de glpi (impossible pour eux de modifier des rapport donc de toute façon). Je cherche une solution semblable aux "recherches sauvegardées" ou on aurait tout les log en vrac trié par date et avec des filtre genre " hostname contient serveur1 " pour pouvoir voir uniquement les log d'un système pour savoir ou il a été positionné dans le parc et donc à quel lieu il a été attribué dans le passé.

Offline

#7 2024-02-26 16:33:24

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

non, (sauf si je n'ai pas compris ce que vous voulez faire), l'utilisateur final ne doit(peut) pas modifier le php,  juste choisir le lieu dans un dropdown de l'interface glpi native
.
$location = new PluginReportsLocationCriteria($report, 'location', _n('Location', 'Locations', 2));
$location->setSqlField("`glpi_locations`.`id`"); 

ces lignes font apparaitre dans le plugin reports une boite de dialogue pour choisir un lieu;

la ligne  $report->addSqlCriteriasRestriction()    ajoute à votre requete  "AND `glpi_locations`.`id`=xxx"  (xxx correspond à ce que vous avez choisi )


quand vous écrivez système  ça correspond à quel objet GLPI ?  computer ou tous les objets du parc ?


j'ai donné l'exemple du filtre sur le lieu mais il y a d'autres filtre du texte par exemple


$system=new PluginReportsTextCriteria($report, 'systeme', __('system'));

dans votre requete

query="select * from glpi_computers where name='".$system->getparametervalue();


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#8 2024-02-26 16:40:21

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Excusez moi j'avais mal lu le bout de code c'est bien ça que je cherche a faire mais dans le sens inverse (car si je me trompe pas on peut deja répertorier tout les "computer" d'un lieu). Je vais essayer de faire en sorte que l'on donne l'id du "computer" et que le rapport nous sorte tout son historique de lieux ou il a été.

Merci pour le coup de main

juste un truc que je comprend pas bien c'est pourquoi dans tout les rapport en php que j'ai vu il y'a des requête a une table "location" alors que dans mon cas non.
A la place de glpi_location.id je peut mettre glpi_logs.items_id ? comme ça le rapport affiche les "old_value" et "new_value" de toutes les entrées dans la table ou le id_search_option est a 3 du items_id choisi par l'utilisateur. ou soit j'ai mal compris ce que signifie ce "location".

Last edited by Mickado (2024-02-26 16:57:45)

Offline

#9 2024-02-26 16:57:51

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

votre demande initiale c'etait bien  "l'historique des lieux"  non ????  donc pour rechercher les lieux c'est locations.id


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#10 2024-02-26 17:00:53

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

vous ne pouvez pas utiliser  PluginReportsLocationCriteria  pour un item_id ; utilisez PluginReportsIntegerCriteria ;  (pensez à préciser itemtype=computer)

pour l'utilisateur saisir un id n'est pas très sympa, vous pouvez faire la recherche sur le nom de l'ordinateur avec PluginReportsTextCriteria


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#11 2024-02-26 17:01:59

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Oui l'historique des lieux ou a été assigné un computeur (avoir l'historique de tout les lieux précédant d'un computer).

Parfait merci je croit avoir tout les détails qu'il me faut. Je me plongerais sur le code php demain pour ecrire les rapport et je donnerais des nouvelles de comment je me suis débrouillé.

Last edited by Mickado (2024-02-26 17:03:36)

Offline

#12 2024-02-27 10:36:20

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Bon j'ai donc commencer a regarder les rapport en php et en me basant sur un existant proche de mon idée j'ai utilisé ce que tu ma dit hier cependant impossible de faire apparaitre la boite de diaglogue car la page renvoye bad request quand je met les deux lignes avec $id

$typecritera = new PluginReportsItemTypeCriteria($report, "itemtype", __('Type'), $types);
$id = new PluginReportsIntegerCriteria($report, "id");
$id->setSqlField("'glpi_logs'.'items_id'");

$report->displayCriteriasForm();

// Declare columns
if($report->criteriasValidated()) {
   $itemtype = $_POST['itemtype'];
   $table = $dbu->getTableForItemType($itemtype);

   $columns = [new PluginReportsColumnLink('items_id', __('Name'), $itemtype,
                                           ['with_comment' => 1]),
               new PluginReportsColumn('otherserial', __('Inventory number')),
               new PluginReportsColumn('old_value', __('Source location', 'reports')),
               new PluginReportsColumn('new_value', __('Target location', 'reports')),
               new PluginReportsColumnDateTime('date_mod', __('Transfert date', 'reports'))];
   $report->setColumns($columns);

   $otherserial = '';
   if (($itemtype != 'CartridgeItem')
         && ($itemtype != 'ConsumableItem')) {
      $otherserial = "`$table`.`otherserial`,";
   }
   $query = "SELECT `$table`.`id` as `items_id`,
                    `$table`.`name`,
                    $otherserial
                    `glpi_logs`.`date_mod` as `date_mod`,
                    `glpi_logs`.`itemtype` as `itemtype`,
                    `glpi_logs`.`old_value`,
                    `glpi_logs`.`new_value`
             FROM `$table`, `glpi_logs` ".
             $report->addSqlCriteriasRestriction()."
                   AND `glpi_logs`.`items_id` =".$id->getparametervalue()."
                   AND `glpi_logs`.`itemtype` = '$itemtype'
                   AND `glpi_logs`.`id_search_option`='3'
             ORDER BY `date_mod` ASC";

Last edited by Mickado (2024-02-27 10:38:02)

Offline

#13 2024-02-27 11:17:17

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

ok j'ai résolu mon problème maintenant IntegerCriteria me permet pas de choisir un id spécifique car a coté il y a une autre boite de selection qui me propose => ou =< et comme id max 100

Last edited by Mickado (2024-02-27 11:23:50)

Offline

#14 2024-02-27 11:32:02

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

oups, faute de frappe j'ai oublié un  "s" 

pour integer, c'est  PluginReportsIntegerCriteria => mais ça propose une liste d'entiers pas une saisie libre, donc pas adapté pour choisir un id d'item

pour du texte c'est PluginReportsTextCriteria (mais on peut mettre des nombres)


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#15 2024-02-27 11:51:05

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

il est possible pour TextCriteria de mettre en filtrage "contient" et pas "=" ?
Car la avec TextCriteria ou IntegerCriteria l'output de la requete et toujours vide

Last edited by Mickado (2024-02-27 11:51:50)

Offline

#16 2024-02-27 12:09:46

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

dans votre requête au lie de mettre    AND `glpi_logs`.`items_id` =".$id->getparametervalue()."   mettez AND `glpi_logs`.`items_id`  like( %".$id->getparametervalue()."% 

vérifiez en mode debug la construction de la requête  ( il faut peut être ajouter un trim  )


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#17 2024-02-27 12:21:54

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Bon je suis entrain de galérer a mon avis mon rapport devrais fonctionné le problème c'est qu'il m'est impossible d'avoir un output sur ma requete SQL. Dans la console de la page web j'ai des tonnes d'erreur en rapport avec "CustomFlatpickrButtons" qui n'est pas défini et parreil pour "hotkeys"

edit : j'ai beau retirer tout les filtres de ma requete SQL rien y fait (select * from glpi.logs ne marche pas non plus)

edit : après un bon cassage de crane je sait d'ou vienne l'erreur. Il semblerais que la parti ajouter automatiquement par addSqlCriteriasRestriction() soit mal codé car il ecrit une requete SQL avec des fautes de syntaxe. En enlevant addSqlCriteriasRestriction() et modifiant legèrement ma requète tout est bon ça marche

Last edited by Mickado (2024-02-27 13:23:50)

Offline

#18 2024-02-27 13:10:53

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

$query = "SELECT `$table`.`id` as `items_id`,
                    `$table`.`name`,
                    $otherserial
                    `glpi_logs`.`date_mod` as `date_mod`,
                    `glpi_logs`.`itemtype` as `itemtype`,
                    `glpi_logs`.`old_value`,
                    `glpi_logs`.`new_value`

            from glpi_logs 
            join `$table` on `$table`.id =glpi_logs.items_id AND glpi_logs.itemtype='".$itemtype."' and `$table`.name='".$id->getparametervalue()."'
           

WHERE                  `glpi_logs`.`id_search_option`='3'
             ORDER BY `date_mod` ASC";



quand je mets ça ça marche en saisissant le nom de l'item


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#19 2024-02-27 13:26:07

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

j'ai préférer mettre l'id (afficher a coté des computer sur glpi) car vu le nombre de computer avec des nom bizzare c'est bien trop compliqué pour l'utilisateur de rentrer le hostname

Offline

#20 2024-02-27 13:51:50

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Bon ducoup j'ai fait les deux rapport (avec l'id et le hostname comme tu me l'a envoyer) parcontre mon dernier souci c'est le nom du rapport "locationhistory_report_title". Et je voit pas comment changer cela meme en modifiant fr_FR.po ou j'ai mis :

msgid "locationhistory_report_title"
msgstr "historique des lieux d'un ordinateur"

Last edited by Mickado (2024-02-27 13:52:33)

Offline

#21 2024-02-27 14:36:08

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

apres avoir modifié fr_FR.po  il faut le compiler en ficher .mo  () par exemple ici : https://po2mo.net/  et remplacer le fichier du plugin.

puis ensuite  dans l'intervace GLPI, passer en mode debug, aller sur configuration>générale>onglet performance > cache de traduction  bouton réinitialiser

le bouton n'est visible qu'en mode DEBUG


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#22 2024-02-27 16:43:41

Mickado
Member
Registered: 2023-12-06
Posts: 18

Re: Affichage de résultat de requete SQL dans le dashboard

Me revoila avec un dernier problème ducoup j'ai fait un autre rapport qui marche parfaitement qui renvoye a l'inverse tout les mouvement qu'il y a eu dans un lieu a la place des mouvement d'un 'computer'. cependant je n'arrive pas à afficher la colonne dans le rapport avec le hostname (malgrer la jointure qui fonctionne car je l'ai tester a part sur phpmyadmin)

$USEDBREPLICATE       = 1;
$DBCONNECION_REQUIRED = 0;

include("../../../../inc/includes.php");

$dbu = new DbUtils();

//TRANS: The name of the report = List of transfered objects
$report= new PluginReportsAutoReport('locationhistory','reports');

// Search criterias
new PluginReportsDateIntervalCriteria($report, "`glpi_logs`.`date_mod`");

// --- Creation de la boites de selections de location ---
$location = new PluginReportsTextCriteria($report, "user_location", __("Location"));
$location->setSqlField("'glpi_logs'.'old_value'");
$location->setSqlField("'glpi_logs'.'new_value'");

$report->displayCriteriasForm();

// Declare columns
if($report->criteriasValidated()) {
   $table = $dbu->getTableForItemType('Computer');

   $columns = [new PluginReportsColumn(`glpi_computers.name `, __('hostname', 'reports')),
               new PluginReportsColumn('old_value', __('Source location', 'reports')),
               new PluginReportsColumn('new_value', __('Target location', 'reports')),
               new PluginReportsColumnDateTime('date_mod', __('Transfert date', 'reports'))];
   $report->setColumns($columns);


   // --- Creation de la requete vers la base de donnee a partir des donnes entrees par l'utilisateur ---

   $query = "SELECT glpi_computers.name , old_value , new_value , glpi_logs.date_mod FROM glpi_logs JOIN glpi_computers ON glpi_computers.id = glpi_logs.items_id
   WHERE glpi_logs.old_value = '".$location->getparametervalue()."' and glpi_logs.itemtype = 'Computer' and glpi_logs.id_search_option = 3
   OR glpi_logs.new_value = '".$location->getparametervalue()."' and glpi_logs.itemtype = 'Computer' and glpi_logs.id_search_option = 3";

   $report->setSqlRequest($query);
   $report->execute();
} else {
   Html::footer();
}

Last edited by Mickado (2024-02-27 16:44:46)

Offline

#23 2024-02-27 17:41:53

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

je ne comprends pas l'intérêt des lignes :

$location->setSqlField("'glpi_logs'.'old_value'");
$location->setSqlField("'glpi_logs'.'new_value'");

elle ne servent que si vous ajoutez

$report->addSqlCriteriasRestriction()


pour simplifier, j'aurais ajouté le itemtype et le id_search_option dans la jointure 

// Search criterias
new PluginReportsDateIntervalCriteria($report, "`glpi_logs`.`date_mod`");

// --- Creation de la boites de selections de location ---
$location = new PluginReportsTextCriteria($report, "user_location", __("Location"));
//$location->setSqlField("'glpi_logs'.'old_value'");
//$location->setSqlField("'glpi_logs'.'new_value'");

$report->displayCriteriasForm();

// Declare columns
if($report->criteriasValidated()) {
   $table = $dbu->getTableForItemType('Computer');

   $columns = [new PluginReportsColumn('PC', __('Hostname', 'reports')),
        new PluginReportsColumnLink('PCID','Host','computer'),
               new PluginReportsColumn('SOURCE', __('Source location', 'reports')),
               new PluginReportsColumn('CIBLE', __('Target location', 'reports')),
               new PluginReportsColumnDateTime('MODIF', __('Transfert date', 'reports'))];
   $report->setColumns($columns);

   // --- Creation de la requete vers la base de donnee a partir des donnes entrees par l'utilisateur ---

$query = "SELECT glpi_computers.name AS 'PC',glpi_computers.id AS 'PCID', glpi_logs.old_value AS 'SOURCE' , glpi_logs.new_value AS 'CIBLE', glpi_logs.date_mod AS 'MODIF'
                     FROM glpi_logs
                    JOIN glpi_computers ON glpi_computers.id = glpi_logs.items_id AND  glpi_logs.itemtype = 'Computer' AND glpi_logs.id_search_option = 3
                    WHERE glpi_logs.old_value = '".$location->getparametervalue()."'    OR glpi_logs.new_value = '".$location->getparametervalue()."' ";

   $report->setSqlRequest($query);
   $report->execute();
} else {
   Html::footer();
}

pour afficher les colonnes utilisez des alias dans la requete et dans les colonnes. vous ne pouvez pas indiquer "table.colonne" 
pour l'exemple j'ai ajouté une colonne id dans la requète et "new PluginReportsColumnLink('PCID','Host','computer')," qui affiche un lien qui pointe vers l'objet


new PluginReportsColumnLink(nom de l'alias dans la requete(id de l'objet) , libellé de la colonne , classe de l'objet)


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#24 2024-02-28 11:42:56

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

oups,  c'est le nom qui est dans old et new value  pas l'id


Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

#25 2024-02-28 12:19:44

LaDenrée
HELPER
Registered: 2012-11-19
Posts: 6,168

Re: Affichage de résultat de requete SQL dans le dashboard

voilà un rapport qui devrait répondre à la demande avec une interface de selection "user friendly "
note : j'ai géré le ">"  dans les noms de lieux, reste à vérifier les autres caractères spéciaux qui pourraient être encodés dans la BDD


$USEDBREPLICATE         = 1;
$DBCONNECTION_REQUIRED  = 0;

include ("../../../../inc/includes.php");

$dbu = new DbUtils();

//TRANS: The name of the report
$report = new PluginReportsAutoReport(__('monrapport_report_title', 'reports'));

// Search criterias
$date = new PluginReportsDateIntervalCriteria($report, "`glpi_logs`.`date_mod`");
$location = new PluginReportsLocationCriteria($report, "user_location", __("Location"));
$report->displayCriteriasForm();

// Declare columns
if($report->criteriasValidated()) {
                         $table = $dbu->getTableForItemType('Computer');
                         $columns = [new PluginReportsColumnLink('PCID',__('Hostname','reports'),'computer'),
                           new PluginReportsColumn('SOURCE', __('Source location', 'reports')),
                          new PluginReportsColumn('CIBLE', __('Target location', 'reports')),
                         new PluginReportsColumnDateTime('MODIF', __('Transfert date', 'reports'))];
   $report->setColumns($columns);

   // --- Creation de la requete vers la base de donnee a partir des donnes entrees par l'utilisateur ---

$query = "SELECT glpi_computers.name AS 'PC',glpi_computers.id AS 'PCID', replace(glpi_logs.old_value,'&#62;','>') AS 'SOURCE' ,replace(glpi_logs.new_value,'&#62;','>') AS 'CIBLE', glpi_logs.date_mod AS 'MODIF' ";
 $query.="                    FROM glpi_logs ";
   $query.="                 JOIN glpi_computers ON glpi_computers.id = glpi_logs.items_id AND glpi_logs.itemtype = 'Computer'   and glpi_logs.id_search_option = 3  ";
   $query.="                 LEFT OUTER JOIN glpi_locations as sourcelocation ON replace(glpi_logs.old_value,'&#62;','>')=concat(sourcelocation.completename,' (',sourcelocation.id,')')  ";
   $query.="                 LEFT OUTER JOIN glpi_locations as targetlocation ON replace(glpi_logs.new_value,'&#62;','>')=concat(targetlocation.completename,' (',targetlocation.id,')')   ";
$query.=" WHERE '".($location->getparametervalue())."' IN (sourcelocation.id,targetlocation.id)  ";
// ajoute les filtres si les dates sont saisies
if ($date->getStartDate()<>'') {
                    $query.=" AND `glpi_logs`.`date_mod`>'" .$date->getStartDate() . " 00:00:00' ";
}
if ($date->getEndDate()<>'') {
                     $query.=" AND `glpi_logs`.`date_mod`>'" .$date->getEndDate() . " 00:00:00' ";
}

$query.=" ORDER BY PC, MODIF DESC  ";

   $report->setSqlRequest($query);
//grouper par Hostname
   $report->setGroupBy("PCID");
   $report->execute();
} else {
   Html::footer();
}

Trouver la panne avant de réparer...
GLPI10.0.10 (ubuntu 22.04 PHP8.1  Mariadb10.6 ) plugins : comportements 2.7.2 reports 1.16.0 formcreator 2.13.8, datainjection 2.13.4 fields 1.21.6

Offline

Board footer

Powered by FluxBB