Bonjour,

Actuellement, les plugins peuvent enregistrer des types d'objets pour
pouvoir les assigner à un ticket grâce à
    $PLUGIN_HOOKS['assign_to_ticket']['<nom_du_plugin>'] = true
et en utilisant la méthode
    Plugin::RegisterClass("<classe_du_type>").

Une liste peut ainsi être générée par la fonction
    plugin_<nom_du_plugin>_AssignToTicket($types)
qui est utilisée dans la méthode
    CommonITILObject::getAllTypesForHelpdesk().

Jusqu'ici tout va bien :) ... mais les 2 points suivants
empêchent la pleine intégration de ces types dans GLPI :

1. Ces types n'apparaissent pas dans la liste des éléments associables
   autorisés pour un profil (ie. onglet Assistance du formulaire d'un
   Profil) à cause d'une condition empêchant les types provenant de
   plugins d'y être répertoriés.
   À mon avis, on peut faire sauter cette condition vu que les plugins
   peuvent déjà utiliser le hook (... à moins qu'il y ait d'autres
   implications que mon grep n'a pas relevé).

2. Si la correction du point précédent est acceptée, la méthode
   CommonITILObject::getAllTypesForHelpdesk() devrait aussi filtrer
   ces types par la liste des types autorisés pour le profil actif,
   c'est à dire $_SESSION["glpiactiveprofile"]["helpdesk_item_type"].
   Cela peut être fait côté plugin mais comme cette méthode le fait
   déjà pour les types du coeur, je pense qu'elle devrait vérifier
   aussi les types des plugins.

J'ai fait plusieurs tests avec le patch ci-joint en reliant un objet
et en supprimant de la base et je n'ai pas encore constaté de
surprise.

--
Kevin Roy
Index: inc/profile.class.php
===================================================================
--- inc/profile.class.php	(revision 23148)
+++ inc/profile.class.php	(working copy)
@@ -2336,9 +2336,7 @@
       $values = array();
       foreach ($CFG_GLPI["ticket_types"] as $key => $itemtype) {
          if ($item = getItemForItemtype($itemtype)) {
-            if (!isPluginItemType($itemtype)) { // No Plugin for the moment
-               $values[$itemtype] = $item->getTypeName();
-            }
+            $values[$itemtype] = $item->getTypeName();
          } else {
             unset($CFG_GLPI["ticket_types"][$key]);
          }
Index: inc/commonitilobject.class.php
===================================================================
--- inc/commonitilobject.class.php	(revision 23148)
+++ inc/commonitilobject.class.php	(working copy)
@@ -4088,7 +4088,13 @@
       }
       asort($types); // core type first... asort could be better ?
       $types = array_merge($types, $ptypes);
-      return $types;
+      $filtered_types = array();
+      foreach($types as $itemtype => $itemtype_name) {
+         if (in_array($itemtype,$_SESSION["glpiactiveprofile"]["helpdesk_item_type"])) {
+            $filtered_types[$itemtype] = $itemtype_name;
+         }
+      }
+      return $filtered_types;
    }
 
 
_______________________________________________
Glpi-dev mailing list
Glpi-dev@gna.org
https://mail.gna.org/listinfo/glpi-dev

Reply via email to