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