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
[email protected]
https://mail.gna.org/listinfo/glpi-dev