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 2018-01-18 11:56:38

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

plugin - classes non reconnues

bonjour,

Je cherche à créer un plugin de gestion d'alerte.
j'ai déjà créé les fichiers setup.php et hook.php.
L'installation et la désinstallation du plugin, ainsi que mes INSERT, tous fonctionnent très biens.

Cependant, j'ai l'impression que les classes que j'ai créer ne sont pas reconnues par glpi.
J'ai, alors, effectué un teste : j'ai créer les classes menu.class.php et menu.form.php afin d'ajouter un onglet quelconque dans les outils, mais il n’apparaît pas.

Est ce que quelqu'un pourrait éclairer ma lanterne ? smile

Merci d'avance.

glpi version : 9.1.2

Last edited by ami du soir (2018-01-18 12:12:09)

Offline

#2 2018-01-18 16:14:29

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

Re: plugin - classes non reconnues

trouvé! il y avait un problème de nommage des classes:
          je les avais nommés --> PluginGestionAlertesConfig
          et j’aurai due les nommer --> PluginGestionalerteConfig

glpi cherchait le plugin gestion, il ne risquait pas de le trouver x)

voilà, si ça peut aider quelqu'un smile

En outre, le but final de mon plugin est d'envoyer des notifications lorsque une date arrive à expiration (un contrôle technique par exemple)
Grâce au plugin GenericObjects il est possible d'ajouté des élément au parc, et d'y ajouter des champs, ce sont ces champs qui m'intéressent.
j'aimerais récupérer une date que j'ai associé à un élément ajouté via GenericObjects, et la réutiliser smile
Mais je ne trouve pas la requête adéquate hmm

Merci d'avance !

Offline

#3 2018-01-18 16:37:26

kurasul
Guest
Registered: 2017-12-20
Posts: 159

Re: plugin - classes non reconnues

je sais pas si cela peux t aide mais losque tu veux cree une nouvelle notification du as toutes les balise associe a ces dernieres


Kurasul // IT Manager  ============  https://discord.gg/qgDXNwS
OS + plugins: Ubuntu 16.04 // GLPI 9.2.1 // Php 7.0 // Sql + phpmyadmin // LDAP //
Fusion Inventory 9.2+1.0 //Cartographie 4.4.0 // Dashboard 1.4.0 // Gestion de baies 1.8.0 // Comptes 2.3.0 // Impression PDF
Imports fabricants 2.0.0 // Liste des taches 1.2.0 // Plus de rapports 1.4.0 // Arrêté du parc 2.4.0

Offline

#4 2018-01-18 17:25:24

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

Re: plugin - classes non reconnues

Merci de ta réponse Kurasul  smile

Dans le plugin que je suis entrain de coder, j'ai ajouté les tables/classes nécessaire à l'ajout des balises associées à la notification que je veux utiliser.
C'est justement une de ces balises que je veux lié à un champ date afin de pouvoir envoyer un mail dans le genre :

         Alerte : nom de l'alerte
                  événement : date de contrôle technique à renouveler
                  date de fin de validité : ##alerteperso.dateexpiration##


Je cherche la requête SQL qui me permettrai de mettre la date en question à la place de ##alerteperso.dateexpiration## smile

Encore merci d'avoir pris le temps de répondre big_smile

Offline

#5 2018-01-18 17:56:07

kurasul
Guest
Registered: 2017-12-20
Posts: 159

Re: plugin - classes non reconnues

##FOREACHauthors## ##ENDFOREACHauthors##    Demandeurs    Tous    Liste de valeurs   
##FOREACHchanges## ##ENDFOREACHchanges##    Changements    Tous    Liste de valeurs   
##FOREACHcosts## ##ENDFOREACHcosts##    Coûts    Tous    Liste de valeurs   
##FOREACHdocuments## ##ENDFOREACHdocuments##    Documents    Tous    Liste de valeurs   
##FOREACHfollowups## ##ENDFOREACHfollowups##    Suivis    Tous    Liste de valeurs   
##FOREACHitems## ##ENDFOREACHitems##    Éléments rattachés    Tous    Liste de valeurs   
##FOREACHlinkedtickets## ##ENDFOREACHlinkedtickets##    Tickets liés    Tous    Liste de valeurs   
##FOREACHlog## ##ENDFOREACHlog##    Historique    Tous    Liste de valeurs   
##FOREACHproblems## ##ENDFOREACHproblems##    Problèmes    Tous    Liste de valeurs   
##FOREACHsuppliers## ##ENDFOREACHsuppliers##    Fournisseurs    Tous    Liste de valeurs   
##FOREACHtasks## ##ENDFOREACHtasks##    Tâches    Tous    Liste de valeurs   
##FOREACHtickets## ##ENDFOREACHtickets##    Tickets non résolus    Tickets non résolus    Liste de valeurs   
##FOREACHvalidations## ##ENDFOREACHvalidations##    Validations    Tous    Liste de valeurs   
##author.category##    Catégorie    Tous    Valeur unique   
##author.email##    Courriel    Tous    Valeur unique   
##author.id##    ID du demandeur    Tous    Valeur unique   
##author.location##    Lieu du demandeur    Tous    Valeur unique   
##author.mobile##    Téléphone mobile    Tous    Valeur unique   
##author.name##    Demandeur    Tous    Valeur unique   
##author.phone##    Téléphone    Tous    Valeur unique   
##author.phone2##    Téléphone 2    Tous    Valeur unique   
##author.title##    Titre    Tous    Valeur unique   
##change.content##    Changement : Description    Tous    Valeur unique   
##change.date##    Changement : Date    Tous    Valeur unique   
##change.id##    Changement : ID    Tous    Valeur unique   
##change.title##    Changement : Titre    Tous    Valeur unique   
##change.url##    Changement : URL    Tous    Valeur unique   
##cost.budget##    Coût : Budget    Tous    Valeur unique   
##cost.comment##    Coût : Commentaires    Tous    Valeur unique   
##cost.costfixed##    Coût : Coût fixe    Tous    Valeur unique   
##cost.costmaterial##    Coût : Coût matériel    Tous    Valeur unique   
##cost.costtime##    Coût : Coût horaire    Tous    Valeur unique   
##cost.datebegin##    Coût : Date de début    Tous    Valeur unique   
##cost.dateend##    Coût : Date de fin    Tous    Valeur unique   
##cost.name##    Coût : Nom    Tous    Valeur unique   
##cost.time##    Coût : Durée    Tous    Valeur unique   
##cost.totalcost##    Coût : Coût total    Tous    Valeur unique   
##document.downloadurl##    Document : URL de téléchargement    Tous    Valeur unique   
##document.filename##    Document : Fichier    Tous    Valeur unique   
##document.heading##    Document : Rubrique    Tous    Valeur unique   
##document.id##    Document : ID    Tous    Valeur unique   
##document.name##    Document : Nom    Tous    Valeur unique   
##document.url##    Document : URL    Tous    Valeur unique   
##document.weblink##    Document : Lien Web    Tous    Valeur unique   
##followup.author##    Rédacteur    Tous    Valeur unique   
##followup.date##    Date d'ouverture    Tous    Valeur unique   
##followup.description##    Description    Tous    Valeur unique   
##followup.isprivate##    Privé    Tous    Valeur unique   
##followup.requesttype##    Source de la demande    Tous    Valeur unique   
##lang.author.category##    Libellé : Catégorie    Tous    Valeur unique   
##lang.author.email##    Libellé : Courriel    Tous    Valeur unique   
##lang.author.id##    Libellé : ID du demandeur    Tous    Valeur unique   
##lang.author.location##    Libellé : Lieu du demandeur    Tous    Valeur unique   
##lang.author.mobile##    Libellé : Téléphone mobile    Tous    Valeur unique   
##lang.author.name##    Libellé : Demandeur    Tous    Valeur unique   
##lang.author.phone##    Libellé : Téléphone    Tous    Valeur unique   
##lang.author.phone2##    Libellé : Téléphone 2    Tous    Valeur unique   
##lang.author.title##    Libellé : Titre    Tous    Valeur unique   
##lang.cost.budget##    Libellé : Coût : Budget    Tous    Valeur unique   
##lang.cost.comment##    Libellé : Coût : Commentaires    Tous    Valeur unique   
##lang.cost.costfixed##    Libellé : Coût : Coût fixe    Tous    Valeur unique   
##lang.cost.costmaterial##    Libellé : Coût : Coût matériel    Tous    Valeur unique   
##lang.cost.costtime##    Libellé : Coût : Coût horaire    Tous    Valeur unique   
##lang.cost.datebegin##    Libellé : Coût : Date de début    Tous    Valeur unique   
##lang.cost.dateend##    Libellé : Coût : Date de fin    Tous    Valeur unique   
##lang.cost.name##    Libellé : Coût : Nom    Tous    Valeur unique   
##lang.cost.time##    Libellé : Coût : Durée    Tous    Valeur unique   
##lang.cost.totalcost##    Libellé : Coût : Coût total    Tous    Valeur unique   
##lang.followup.author##    Libellé : Rédacteur    Tous    Valeur unique   
##lang.followup.date##    Libellé : Date d'ouverture    Tous    Valeur unique   
##lang.followup.description##    Libellé : Description    Tous    Valeur unique   
##lang.followup.isprivate##    Libellé : Privé    Tous    Valeur unique   
##lang.followup.requesttype##    Libellé : Source de la demande    Tous    Valeur unique   
##lang.satisfaction.dateanswered##    Libellé : Date de réponse à l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##lang.satisfaction.datebegin##    Libellé : Date de création de l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##lang.satisfaction.description##    Libellé : Commentaire à l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##lang.satisfaction.satisfaction##    Libellé : Satisfaction    Enquête de satisfaction    Valeur unique   
##lang.satisfaction.text##    Libellé : Invitation à remplir l'enquête    Enquête de satisfaction    Valeur unique   
##lang.supplier.address##    Libellé : Adresse    Tous    Valeur unique   
##lang.supplier.comments##    Libellé : Commentaires    Tous    Valeur unique   
##lang.supplier.country##    Libellé : Pays    Tous    Valeur unique   
##lang.supplier.email##    Libellé : Courriel    Tous    Valeur unique   
##lang.supplier.fax##    Libellé : Fax    Tous    Valeur unique   
##lang.supplier.id##    Libellé : ID fournisseur    Tous    Valeur unique   
##lang.supplier.name##    Libellé : Fournisseur    Tous    Valeur unique   
##lang.supplier.phone##    Libellé : Téléphone    Tous    Valeur unique   
##lang.supplier.postcode##    Libellé : Code postal    Tous    Valeur unique   
##lang.supplier.state##    Libellé : État    Tous    Valeur unique   
##lang.supplier.town##    Libellé : Ville    Tous    Valeur unique   
##lang.supplier.type##    Libellé : Type de tiers    Tous    Valeur unique   
##lang.supplier.website##    Libellé : Site Web    Tous    Valeur unique   
##lang.task.author##    Libellé : Rédacteur    Tous    Valeur unique   
##lang.task.begin##    Libellé : Date de début    Tous    Valeur unique   
##lang.task.category##    Libellé : Catégorie    Tous    Valeur unique   
##lang.task.categorycomment##    Libellé : Description de la catégorie    Tous    Valeur unique   
##lang.task.categoryid##    Libellé : ID de catégorie    Tous    Valeur unique   
##lang.task.date##    Libellé : Date d'ouverture    Tous    Valeur unique   
##lang.task.description##    Libellé : Description    Tous    Valeur unique   
##lang.task.end##    Libellé : Date de fin    Tous    Valeur unique   
##lang.task.group##    Libellé : Groupe en charge de la tâche    Tous    Valeur unique   
##lang.task.isprivate##    Libellé : Privé    Tous    Valeur unique   
##lang.task.status##    Libellé : Statut    Tous    Valeur unique   
##lang.task.time##    Libellé : Durée totale    Tous    Valeur unique   
##lang.task.user##    Libellé : Utilisateur affecté à la tâche    Tous    Valeur unique   
##lang.ticket.action##    Libellé : Événement    Tous    Valeur unique   
##lang.ticket.assigntogroups##    Libellé : Assigné aux groupes    Tous    Valeur unique   
##lang.ticket.assigntosupplier##    Libellé : Assigné à un fournisseur    Tous    Valeur unique   
##lang.ticket.assigntousers##    Libellé : Assigné aux techniciens    Tous    Valeur unique   
##lang.ticket.attribution##    Libellé : Attribué à    Tous    Valeur unique   
##lang.ticket.authors##    Libellé : Demandeurs    Tous    Valeur unique   
##lang.ticket.autoclose##    Libellé : Clôture automatique des tickets résolus après    Tous    Valeur unique   
##lang.ticket.autoclosewarning##    Libellé : Sans réponse, le ticket sera automatiquement clos dans ? jours    Tous    Valeur unique   
##lang.ticket.category##    Libellé : Catégorie    Tous    Valeur unique   
##lang.ticket.changes##    Libellé : Changements    Tous    Valeur unique   
##lang.ticket.closedate##    Libellé : Date de clôture    Tous    Valeur unique   
##lang.ticket.content##    Libellé : Description    Tous    Valeur unique   
##lang.ticket.costfixed##    Libellé : Coût fixe    Tous    Valeur unique   
##lang.ticket.costmaterial##    Libellé : Coût matériel    Tous    Valeur unique   
##lang.ticket.costs##    Libellé : Coûts    Tous    Valeur unique   
##lang.ticket.costtime##    Libellé : Coût horaire    Tous    Valeur unique   
##lang.ticket.creationdate##    Libellé : Date d'ouverture    Tous    Valeur unique   
##lang.ticket.days##    Libellé : Jours    Tous    Valeur unique   
##lang.ticket.description##    Libellé : Ticket : Description    Tous    Valeur unique   
##lang.ticket.duedate##    Libellé : Temps de résolution    Tous    Valeur unique   
##lang.ticket.entity##    Libellé : Entité    Tous    Valeur unique   
##lang.ticket.entity.address##    Libellé : Entité (Adresse)    Tous    Valeur unique   
##lang.ticket.entity.country##    Libellé : Entité (Pays)    Tous    Valeur unique   
##lang.ticket.entity.email##    Libellé : Entité (Courriel)    Tous    Valeur unique   
##lang.ticket.entity.fax##    Libellé : Entité (Fax)    Tous    Valeur unique   
##lang.ticket.entity.phone##    Libellé : Entité (Téléphone)    Tous    Valeur unique   
##lang.ticket.entity.postcode##    Libellé : Entité (Code postal)    Tous    Valeur unique   
##lang.ticket.entity.state##    Libellé : Entité (État)    Tous    Valeur unique   
##lang.ticket.entity.town##    Libellé : Entité (Ville)    Tous    Valeur unique   
##lang.ticket.entity.website##    Libellé : Entité (Site Web)    Tous    Valeur unique   
##lang.ticket.globalvalidation##    Libellé : Statut global de la validation    Tous    Valeur unique   
##lang.ticket.groups##    Libellé : Groupes demandeur    Tous    Valeur unique   
##lang.ticket.id##    Libellé : ID    Tous    Valeur unique   
##lang.ticket.impact##    Libellé : Impact    Tous    Valeur unique   
##lang.ticket.isdeleted##    Libellé : Supprimé    Tous    Valeur unique   
##lang.ticket.item.contact##    Libellé : Usager    Tous    Valeur unique   
##lang.ticket.item.contactnumber##    Libellé : Usager numéro    Tous    Valeur unique   
##lang.ticket.item.group##    Libellé : Groupe    Tous    Valeur unique   
##lang.ticket.item.location##    Libellé : Éléments associés : Nom du lieu    Tous    Valeur unique   
##lang.ticket.item.locationaltitude##    Libellé : Éléments associés : Altitude    Tous    Valeur unique   
##lang.ticket.item.locationbuilding##    Libellé : Éléments associés : Code du bâtiment    Tous    Valeur unique   
##lang.ticket.item.locationcomment##    Libellé : Éléments associés : Commentaires du lieu    Tous    Valeur unique   
##lang.ticket.item.locationlatitude##    Libellé : Éléments associés : Latitude    Tous    Valeur unique   
##lang.ticket.item.locationlongitude##    Libellé : Éléments associés : Longitude    Tous    Valeur unique   
##lang.ticket.item.locationroom##    Libellé : Éléments associés : Code de la pièce    Tous    Valeur unique   
##lang.ticket.item.model##    Libellé : Modèle    Tous    Valeur unique   
##lang.ticket.item.name##    Libellé : Élément rattaché    Tous    Valeur unique   
##lang.ticket.item.otherserial##    Libellé : Numéro d'inventaire    Tous    Valeur unique   
##lang.ticket.item.serial##    Libellé : Numéro de série    Tous    Valeur unique   
##lang.ticket.item.user##    Libellé : Utilisateur    Tous    Valeur unique   
##lang.ticket.itemtype##    Libellé : Type d'élément    Tous    Valeur unique   
##lang.ticket.lastupdater##    Libellé : Auteur de la dernière modification    Tous    Valeur unique   
##lang.ticket.linkedtickets##    Libellé : Tickets liés    Tous    Valeur unique   
##lang.ticket.location##    Libellé : Lieu    Tous    Valeur unique   
##lang.ticket.location.altitude##    Libellé : Altitude    Tous    Valeur unique   
##lang.ticket.location.building##    Libellé : Code du bâtiment    Tous    Valeur unique   
##lang.ticket.location.comment##    Libellé : Commentaires du lieu    Tous    Valeur unique   
##lang.ticket.location.latitude##    Libellé : Latitude    Tous    Valeur unique   
##lang.ticket.location.longitude##    Libellé : Longitude    Tous    Valeur unique   
##lang.ticket.location.room##    Libellé : Code de la pièce    Tous    Valeur unique   
##lang.ticket.log##    Libellé : Historique    Tous    Valeur unique   
##lang.ticket.nocategoryassigned##    Libellé : Pas de catégorie attribuée    Tous    Valeur unique   
##lang.ticket.numberofchanges##    Libellé : Nombre de changements    Tous    Valeur unique   
##lang.ticket.numberofcosts##    Libellé : Nombre de coûts    Tous    Valeur unique   
##lang.ticket.numberofdocuments##    Libellé : Nombre de documents    Tous    Valeur unique   
##lang.ticket.numberoffollowups##    Libellé : Nombre de suivis    Tous    Valeur unique   
##lang.ticket.numberofitems##    Libellé : Nombre d'éléments    Tous    Valeur unique   
##lang.ticket.numberoflinkedtickets##    Libellé : Nombre de tickets liés    Tous    Valeur unique   
##lang.ticket.numberofproblems##    Libellé : Nombre de problèmes    Tous    Valeur unique   
##lang.ticket.numberoftasks##    Libellé : Nombre de tâches    Tous    Valeur unique   
##lang.ticket.numberofunresolved##    Libellé : Nombre d'éléments non résolus    Tous    Valeur unique   
##lang.ticket.observergroups##    Libellé : Groupes observateur    Tous    Valeur unique   
##lang.ticket.observerusers##    Libellé : Observateurs    Tous    Valeur unique   
##lang.ticket.ola_tto##    Libellé : OLA / Temps interne de prise en compte    Tous    Valeur unique   
##lang.ticket.ola_ttr##    Libellé : OLA / Temps interne de résolution    Tous    Valeur unique   
##lang.ticket.openbyuser##    Libellé : Rédacteur    Tous    Valeur unique   
##lang.ticket.priority##    Libellé : Priorité    Tous    Valeur unique   
##lang.ticket.problems##    Libellé : Problèmes    Tous    Valeur unique   
##lang.ticket.requesttype##    Libellé : Source de la demande    Tous    Valeur unique   
##lang.ticket.sla##    Libellé : SLAs    Tous    Valeur unique   
##lang.ticket.sla_tto##    Libellé : SLAs / Temps de prise en charge    Tous    Valeur unique   
##lang.ticket.sla_ttr##    Libellé : SLAs / Temps de résolution    Tous    Valeur unique   
##lang.ticket.solution.approval.author##    Libellé : Valideur    Tous    Valeur unique   
##lang.ticket.solution.approval.date##    Libellé : Date de rejet de la solution    Tous    Valeur unique   
##lang.ticket.solution.approval.description##    Libellé : Commentaire de rejet de la solution    Tous    Valeur unique   
##lang.ticket.solution.description##    Libellé : Solution    Tous    Valeur unique   
##lang.ticket.solution.type##    Libellé : Type de solution    Tous    Valeur unique   
##lang.ticket.solvedate##    Libellé : Date de résolution    Tous    Valeur unique   
##lang.ticket.status##    Libellé : Statut    Tous    Valeur unique   
##lang.ticket.suppliers##    Libellé : Fournisseurs    Tous    Valeur unique   
##lang.ticket.tasks##    Libellé : Tâches    Tous    Valeur unique   
##lang.ticket.time##    Libellé : Durée totale    Tous    Valeur unique   
##lang.ticket.title##    Libellé : Titre    Tous    Valeur unique   
##lang.ticket.totalcost##    Libellé : Coût total    Tous    Valeur unique   
##lang.ticket.type##    Libellé : Type    Tous    Valeur unique   
##lang.ticket.urgency##    Libellé : Urgence    Tous    Valeur unique   
##lang.ticket.url##    Libellé : URL    Tous    Valeur unique   
##lang.validation.author##    Libellé : Demandeur    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.commentsubmission##    Libellé : Demande : Commentaires    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.commentvalidation##    Libellé : Validation : Commentaires    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.status##    Libellé : Statut de la demande de validation    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.submissiondate##    Libellé : Demande : Date    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.validationdate##    Libellé : Validation : Date    Demande de validation, Réponse à une demande de validation    Valeur unique   
##lang.validation.validator##    Libellé : Décideur    Demande de validation, Réponse à une demande de validation    Valeur unique   
##linkedticket.content##    Ticket lié : Description    Tous    Valeur unique   
##linkedticket.id##    Ticket lié : ID    Tous    Valeur unique   
##linkedticket.link##    Ticket lié : Lien    Tous    Valeur unique   
##linkedticket.title##    Ticket lié : Titre    Tous    Valeur unique   
##linkedticket.url##    Ticket lié : URL    Tous    Valeur unique   
##problem.content##    Problème : Description    Tous    Valeur unique   
##problem.date##    Problème : Date    Tous    Valeur unique   
##problem.id##    Problème : ID    Tous    Valeur unique   
##problem.title##    Problème : Titre    Tous    Valeur unique   
##problem.url##    Problème : URL    Tous    Valeur unique   
##satisfaction.dateanswered##    Date de réponse à l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##satisfaction.datebegin##    Date de création de l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##satisfaction.description##    Commentaire à l'enquête de satisfaction    Enquête de satisfaction    Valeur unique   
##satisfaction.satisfaction##    Satisfaction    Enquête de satisfaction    Valeur unique   
##satisfaction.type##    Type d'enquête    Enquête de satisfaction    Valeur unique   
##supplier.address##    Adresse    Tous    Valeur unique   
##supplier.comments##    Commentaires    Tous    Valeur unique   
##supplier.country##    Pays    Tous    Valeur unique   
##supplier.email##    Courriel    Tous    Valeur unique   
##supplier.fax##    Fax    Tous    Valeur unique   
##supplier.id##    ID fournisseur    Tous    Valeur unique   
##supplier.name##    Fournisseur    Tous    Valeur unique   
##supplier.phone##    Téléphone    Tous    Valeur unique   
##supplier.postcode##    Code postal    Tous    Valeur unique   
##supplier.state##    État    Tous    Valeur unique   
##supplier.town##    Ville    Tous    Valeur unique   
##supplier.type##    Type de tiers    Tous    Valeur unique   
##supplier.website##    Site Web    Tous    Valeur unique   
##task.author##    Rédacteur    Tous    Valeur unique   
##task.begin##    Date de début    Tous    Valeur unique   
##task.category##    Catégorie    Tous    Valeur unique   
##task.categorycomment##    Description de la catégorie    Tous    Valeur unique   
##task.categoryid##    ID de catégorie    Tous    Valeur unique   
##task.date##    Date d'ouverture    Tous    Valeur unique   
##task.description##    Description    Tous    Valeur unique   
##task.end##    Date de fin    Tous    Valeur unique   
##task.group##    Groupe en charge de la tâche    Tous    Valeur unique   
##task.isprivate##    Privé    Tous    Valeur unique   
##task.status##    Statut    Tous    Valeur unique   
##task.time##    Durée totale    Tous    Valeur unique   
##task.user##    Utilisateur affecté à la tâche    Tous    Valeur unique   
##ticket.action##    Événement    Tous    Valeur unique   
##ticket.assigntogroups##    Assigné aux groupes    Tous    Valeur unique   
##ticket.assigntosupplier##    Assigné à un fournisseur    Tous    Valeur unique   
##ticket.assigntousers##    Assigné aux techniciens    Tous    Valeur unique   
##ticket.authors##    Demandeurs    Tous    Valeur unique   
##ticket.autoclose##    Clôture automatique des tickets résolus après    Tous    Valeur unique   
##ticket.category##    Catégorie    Tous    Valeur unique   
##ticket.closedate##    Date de clôture    Tous    Valeur unique   
##ticket.content##    Description    Tous    Valeur unique   
##ticket.costfixed##    Coût fixe    Tous    Valeur unique   
##ticket.costmaterial##    Coût matériel    Tous    Valeur unique   
##ticket.costtime##    Coût horaire    Tous    Valeur unique   
##ticket.creationdate##    Date d'ouverture    Tous    Valeur unique   
##ticket.description##    Ticket : Description    Tous    Valeur unique   
##ticket.duedate##    Temps de résolution    Tous    Valeur unique   
##ticket.entity##    Entité (Nom complet)    Tous    Valeur unique   
##ticket.entity.address##    Entité (Adresse)    Tous    Valeur unique   
##ticket.entity.country##    Entité (Pays)    Tous    Valeur unique   
##ticket.entity.email##    Entité (Courriel)    Tous    Valeur unique   
##ticket.entity.fax##    Entité (Fax)    Tous    Valeur unique   
##ticket.entity.phone##    Entité (Téléphone)    Tous    Valeur unique   
##ticket.entity.postcode##    Entité (Code postal)    Tous    Valeur unique   
##ticket.entity.state##    Entité (État)    Tous    Valeur unique   
##ticket.entity.town##    Entité (Ville)    Tous    Valeur unique   
##ticket.entity.website##    Entité (Site Web)    Tous    Valeur unique   
##ticket.globalvalidation##    Statut global de la validation    Tous    Valeur unique   
##ticket.groups##    Groupes demandeur    Tous    Valeur unique   
##ticket.id##    ID    Tous    Valeur unique   
##ticket.impact##    Impact    Tous    Valeur unique   
##ticket.isdeleted##    Supprimé    Tous    Valeur unique   
##ticket.item.contact##    Usager    Tous    Valeur unique   
##ticket.item.contactnumber##    Usager numéro    Tous    Valeur unique   
##ticket.item.group##    Groupe    Tous    Valeur unique   
##ticket.item.location##    Éléments associés : Nom du lieu    Tous    Valeur unique   
##ticket.item.locationaltitude##    Éléments associés : Altitude    Tous    Valeur unique   
##ticket.item.locationbuilding##    Éléments associés : Code du bâtiment    Tous    Valeur unique   
##ticket.item.locationcomment##    Éléments associés : Commentaires du lieu    Tous    Valeur unique   
##ticket.item.locationlatitude##    Éléments associés : Latitude    Tous    Valeur unique   
##ticket.item.locationlongitude##    Éléments associés : Longitude    Tous    Valeur unique   
##ticket.item.locationroom##    Éléments associés : Code de la pièce    Tous    Valeur unique   
##ticket.item.model##    Modèle    Tous    Valeur unique   
##ticket.item.name##    Élément rattaché    Tous    Valeur unique   
##ticket.item.otherserial##    Numéro d'inventaire    Tous    Valeur unique   
##ticket.item.serial##    Numéro de série    Tous    Valeur unique   
##ticket.item.user##    Utilisateur    Tous    Valeur unique   
##ticket.itemtype##    Type d'élément    Tous    Valeur unique   
##ticket.lastupdater##    Auteur de la dernière modification    Tous    Valeur unique   
##ticket.location##    Lieu    Tous    Valeur unique   
##ticket.location.altitude##    Altitude    Tous    Valeur unique   
##ticket.location.building##    Code du bâtiment    Tous    Valeur unique   
##ticket.location.comment##    Commentaires du lieu    Tous    Valeur unique   
##ticket.location.latitude##    Latitude    Tous    Valeur unique   
##ticket.location.longitude##    Longitude    Tous    Valeur unique   
##ticket.location.room##    Code de la pièce    Tous    Valeur unique   
##ticket.log.content##    Historique : Mise à jour    Tous    Valeur unique   
##ticket.log.date##    Historique : Date    Tous    Valeur unique   
##ticket.log.field##    Historique : Champ    Tous    Valeur unique   
##ticket.log.user##    Historique : Utilisateur    Tous    Valeur unique   
##ticket.numberofchanges##    Nombre de changements    Tous    Valeur unique   
##ticket.numberofcosts##    Nombre de coûts    Tous    Valeur unique   
##ticket.numberofdocuments##    Nombre de documents    Tous    Valeur unique   
##ticket.numberoffollowups##    Nombre de suivis    Tous    Valeur unique   
##ticket.numberofitems##    Nombre d'éléments    Tous    Valeur unique   
##ticket.numberoflinkedtickets##    Nombre de tickets liés    Tous    Valeur unique   
##ticket.numberoflogs##    Historique : Nombre d'éléments    Tous    Valeur unique   
##ticket.numberofproblems##    Nombre de problèmes    Tous    Valeur unique   
##ticket.numberoftasks##    Nombre de tâches    Tous    Valeur unique   
##ticket.numberofunresolved##    Nombre d'éléments non résolus    Tous    Valeur unique   
##ticket.observergroups##    Groupes observateur    Tous    Valeur unique   
##ticket.observerusers##    Observateurs    Tous    Valeur unique   
##ticket.ola_tto##    OLA / Temps interne de prise en compte    Tous    Valeur unique   
##ticket.ola_ttr##    OLA / Temps interne de résolution    Tous    Valeur unique   
##ticket.openbyuser##    Rédacteur    Tous    Valeur unique   
##ticket.priority##    Priorité    Tous    Valeur unique   
##ticket.requesttype##    Source de la demande    Tous    Valeur unique   
##ticket.shortentity##    Entité (Nom)    Tous    Valeur unique   
##ticket.sla##    SLAs    Tous    Valeur unique   
##ticket.sla_tto##    SLAs / Temps de prise en charge    Tous    Valeur unique   
##ticket.sla_ttr##    SLAs / Temps de résolution    Tous    Valeur unique   
##ticket.solution.approval.author##    Valideur    Tous    Valeur unique   
##ticket.solution.approval.date##    Date de rejet de la solution    Tous    Valeur unique   
##ticket.solution.approval.description##    Commentaire de rejet de la solution    Tous    Valeur unique   
##ticket.solution.description##    Solution    Tous    Valeur unique   
##ticket.solution.type##    Type de solution    Tous    Valeur unique   
##ticket.solvedate##    Date de résolution    Tous    Valeur unique   
##ticket.status##    Statut    Tous    Valeur unique   
##ticket.storestatus##    Valeur du statut en base    Tous    Valeur unique    1,2,3,4,5,6
##ticket.suppliers##    Fournisseurs    Tous    Valeur unique   
##ticket.time##    Durée totale    Tous    Valeur unique   
##ticket.title##    Titre    Tous    Valeur unique   
##ticket.totalcost##    Coût total    Tous    Valeur unique   
##ticket.type##    Type    Tous    Valeur unique   
##ticket.urgency##    Urgence    Tous    Valeur unique   
##ticket.url##    URL    Tous    Valeur unique   
##ticket.urlapprove##    Lien web d'approbation de solution    Tous    Valeur unique   
##ticket.urldocument##    Documents : URL    Tous    Valeur unique   
##ticket.urlsatisfaction##    Satisfaction : URL    Tous    Valeur unique   
##ticket.urlvalidation##    Demande de validation : URL    Tous    Valeur unique   
##validation.answer.title##    Une réponse à une demande de validation a été fournie    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.author##    Demandeur    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.commentsubmission##    Demande : Commentaires    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.commentvalidation##    Validation : Commentaires    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.status##    Statut de la demande de validation    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.submission.title##    Une demande de validation a été envoyée    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.submissiondate##    Demande : Date    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.validationdate##    Validation : Date    Demande de validation, Réponse à une demande de validation    Valeur unique   
##validation.validationstatus##    Valeur du statut en base    Tous    Valeur unique    2,4,3,1
##validation.validator##    Décideur    Demande de validation, Réponse à une demande de validation    Valeur unique


Kurasul // IT Manager  ============  https://discord.gg/qgDXNwS
OS + plugins: Ubuntu 16.04 // GLPI 9.2.1 // Php 7.0 // Sql + phpmyadmin // LDAP //
Fusion Inventory 9.2+1.0 //Cartographie 4.4.0 // Dashboard 1.4.0 // Gestion de baies 1.8.0 // Comptes 2.3.0 // Impression PDF
Imports fabricants 2.0.0 // Liste des taches 1.2.0 // Plus de rapports 1.4.0 // Arrêté du parc 2.4.0

Offline

#6 2018-01-19 16:39:08

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 14,104

Re: plugin - classes non reconnues

Dans votre plugin il faut 2 fonctions :
- getTags() qui défini les nouvelles balises
- getDatasForTemplate() qui défini le contenu de chaque balise

Tout ça à mettre dans la classe NotificationTarget de votre classe


CentOS 6.5 - CentOS 7
PHP 5.6 - PHP 7 - MySQL 5.6  + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#7 2018-01-22 10:47:14

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

Re: plugin - classes non reconnues

Bonjour,

Merci pour vos réponses,

j'ai déjà ces deux fonctions dans notificationtarget.

voici le code de notificationtargetalerte.class.php:

class PluginGestionalertesNotificationTargetAlerte extends NotificationTarget {

   const REQUESTER = 30;
   
   const AlertePerso  = "AlertePerso";
   
   function getEvents() {
      return array(self::AlertePerso  => __('Alertes Personalisées', 'gestionalertes');
   }

   function getDatasForTemplate($event, $options = array()) {

      $this->datas['##alerte.entity##']              = Dropdown::getDropdownName('glpi_entities', $options['entities_id']);
      $this->datas['##lang.alerte.entity##']         = __('Entity');
   
      $this->datas['##alerte.action##'] = __('Alertes Personalisées', 'gestionalertes');
	  
      $this->datas['##lang.alerteperso.name##']           = __('Name');
      $this->datas['##lang.alerteperso.dateexpiration##'] = __('Date de fin de validité', 'gestionalertes');

      if (isset($options['gestionalertes'])) {
         foreach ($options['gestionalertes'] as $id => $alerteperso) {
            $tmp = array();

            $tmp['##alerteperso.name##']           = $alerteperso['name'];
            $tmp['##alerteperso.dateexpiration##'] = Html::convDate($alerteperso['date_expiration']);

            $this->datas['gestionalertes'][] = $tmp;
         }
      }

   }

   function getTags() {

      $tags = array('alerteperso.name'                    => __('Name'),
                    'alerteperso.dateexpiration'          => __('Date de fin de validité', 'gestionalertes'),
      
      foreach ($tags as $tag => $label) {
         $this->addTagToList(array('tag'   => $tag, 
                                   'label' => $label,
                                   'value' => true));
      }

      $this->addTagToList(array('tag'     => 'alerteperso',
                                'label'   => __('Alerte Perso', 'gestionalertes'),
                                'value'   => false,
                                'foreach' => true,
                                'events'  => array(self::AlertePerso)));
      
      asort($this->tag_descriptions);
   }

Dans alerte.class.php j'ai la fonction queryGestionalertesAlerte() et c'est avec celle ci que je suis perdu. hmm

static function queryGestionalertesAlerte() {

      $config=new PluginGestionalertesConfig();
      $notif= new PluginGestionalertesNotificationTargetAlerte();
      
      $config->getFromDB();
      $delay=$config->fields["delay_whichexpire"];
     
      $query = "SELECT *
         FROM 
         WHERE ;
	  return $query;
}

je ne sais pas quoi mettre dans cette requête,
je ne comprend pas vraiment le fonctionnement de la base de données de GenericObject, sad
car je veux pointer la requête sur un objet ajouté vie GenericObject.

Encore merci de m'aider ! big_smile

Last edited by ami du soir (2018-01-22 10:47:58)

Offline

#8 2018-02-02 18:10:11

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 14,104

Re: plugin - classes non reconnues

Là vous êtes dans un plugin et non dans le coeur.
Donc on va commencer par le début.

Comment avez vous défini l'appel au HOOK des notifications dans le setup de votre plugin ?


CentOS 6.5 - CentOS 7
PHP 5.6 - PHP 7 - MySQL 5.6  + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

#9 2018-02-05 18:03:05

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

Re: plugin - classes non reconnues

Merci de votre réponse Yllen,

j’ai défini l'appel au HOOK des notifications ainsi:

Plugin::registerClass('PluginGestionalertesAlerte', array(
		 'notificationtemplates_types' => true,
		 'addtabon'                    => 'CronTask'
		));

Offline

#10 2018-02-09 18:28:22

ami du soir
Guest
Registered: 2017-06-02
Posts: 8

Re: plugin - classes non reconnues

Bonjour,

J'ai bien avancé, les notifications fonctionnent et les actions automatiques se lancent correctement,
à une exception près hmm

Lorsque j’exécute mon action automatique j’obtiens ce message d'erreur:

PHP Notice: Undefined index: AlerteExtincteur in ****/plugins/gestionalertes/inc/alerteextincteur.class.php at line 72
PHP Notice: Undefined offset: 0 in ****/plugins/gestionalertes/inc/alerteextincteur.class.php at line 72


Voici le code de alerteextincteur.class.php:

class PluginGestionalertesAlerteExtincteur extends CommonDBTM {
  
     static $rightname 				   	 = "plugin_gestionalertes";
   
   static function getTypeName($nb=0) {
      return __("AlerteExtincteur", 'gestionalertes');
   }
   
  
   static function queryAlerteExtincteur() {

      $config=new PluginGestionalertesConfig();
      $notif= new PluginGestionalertesNotificationState();
	 
      $config->getFromDB('1');
      $delay=$config->fields["delay_whichexpire"];
         $query = "SELECT *
         FROM `glpi_plugin_genericobject_extincteurs`
         WHERE `expirationdate` IS NOT NULL
         AND `is_deleted` = '0'
         AND DATEDIFF(CURDATE(),`expirationdate`) > -$delay  
         AND DATEDIFF(CURDATE(),`expirationdate`) < 0 ";
      $query.= "AND `states_id` NOT IN (999999";
      $query.= $notif->findStates();
      $query.= ") ";
	  return $query; 
   }
   
   static function cronInfo($name) {
	   switch ($name) {
        case 'AlerteExtincteur' :
			return array ('description' => __("Date de fin de validité d'un extincteur", 'gestionalertes'));   // Optional
		break;
	   }
   }
   
   static function cronAlerteExtincteur($task=NULL) {
      global $DB,$CFG_GLPI;
      
      if (!$CFG_GLPI["use_mailing"] || !TableExists("glpi_plugin_genericobject_extincteurs")) {
         return 0;
      }
	  
      $message=array();
      $cron_status = 0;
      
      $query_AlerteExtincteur = self::queryAlerteExtincteur();

      $querys = array(PluginGestionalertesNotificationTargetAlerteExtincteur::AlerteExtincteur => $query_AlerteExtincteur);
      
      $extincteurs_infos = array();
      $extincteurs_messages = array();

	  foreach ($querys as $type => $query) {
         $extincteurs_infos[$type] = array();
         if (!empty($query)) {
            foreach ($DB->request($query) as $data) {

			  $entity = $data['entities_id'];		   
              $message = "Extincteur: ".$data["name"]."  Date de fin de validité: ".Html::convdate($data["expirationdate"])."; <br> \n";
              $extincteurs_infos[$type][$entity][] = $data;

               if (!isset($extincteurs_infos[$type][$entity])) {
                  $extincteurs_messages[$type][$entity] = __("Date de fin de validité d'un extincteur", 'gestionalertes')."<br/>";
               }
               $extincteurs_messages[$type][$entity] .= $message;
            }
         }
	  }
	  
	  foreach ($querys as $type => $query) {
         foreach ($extincteurs_infos[$type] as $entity => $extincteurs) {
            Plugin::loadLang('gestionalertes');
			//si l'événement a lieux alors execute l'action automatique
            if (NotificationEvent::raiseEvent($type, new PluginGestionalertesAlerteExtincteur(), array('entities_id' => $entity,
																										'gestionalertes'      => $extincteurs))) {
               $message = $extincteurs_messages[$type][$entity];
               $cron_status = 1;
               if ($task) {
                  $task->log(Dropdown::getDropdownName("glpi_entities",
                                                       $entity).":  $message\n");
                  $task->addVolume(1);
               } else {
                  Session::addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities",
                                                                    $entity).":  $message");
               }
			//sinon r'envoie un message d'erreur
            } else {
               if ($task) {
                  $task->log(Dropdown::getDropdownName("glpi_entities",$entity).
                             ":  Send alert failed\n");
               } else {
                  Session::addMessageAfterRedirect(Dropdown::getDropdownName("glpi_entities",$entity).
                                          ":  Send alert failed",false,ERROR);
               }
            }
         }
      }
      
      return $cron_status;
   }
	
   static function configCron($target) {

      $config=new PluginGestionalertesConfig();

      $config->showForm($target,1);
    
   }
 
}

le code de config.class.php

class PluginGestionalertesConfig extends CommonDBTM {
	
	function getTabNameForItem(CommonGLPI $item, $withtemplate=0) {
		
      if ($item->getType()=='CronTask'&& $item->getField('name') == 'AlerteExtincteur') {
            return __('Configuration du plugin', 'gestionalertes');
      }
      return '';
   }
   
   static function displayTabContentForItem(CommonGLPI $item, $tabnum=1, $withtemplate=0) {
      global $CFG_GLPI;
	  
	if ($item->getType()=='CronTask' && $item->getField('name') =='AlerteExtincteur') {

         $target = $CFG_GLPI["root_doc"]."/plugins/gestionalertes/front/notification.state.php";
         PluginGestionalertesAlerteExtincteur::configCron($target);
		 return true;
	 }
   }
   
   function showForm($target,$ID) {

      if(!$this->getFromDB($ID)){
         $this->getEmpty();
      }
      
      $delay_whichexpire  = $this->fields["delay_whichexpire"];
	  
      $date_whichexpire  = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") + $delay_whichexpire, date("y")));
      
      echo "<div align='center'>";
      echo "<form method='post' action=\"$target\">";
      echo "<table class='tab_cadre_fixe'>";
      echo "<tr class='tab_bg_1'>";
      echo "<th colspan='4'>";
      _e('Delai de verification de validite des objets', 'gestionalertes');
      echo "</th>";
      echo "</tr>";

      echo "<tr class='tab_bg_1'>";
      echo "<td>";
      _e('validite expire dans moins de ', 'gestionalertes');
      echo "</td>";
      echo "<td>";
      echo "&nbsp;<input type='text' size='15' name='delay_whichexpire' value=\"$delay_whichexpire\">";
      echo "&nbsp;"._n('Day', 'Days', 2)." ( < ".Html::convdate($date_whichexpire).")<br>";
      echo "</td>";
      echo "</tr>";

      echo "<tr class='tab_bg_1'>";
      echo "<td class='center' colspan='4'>";
      echo "<input type='hidden' name='id' value='".$ID."'>";
      echo "<input type='submit' name='update' value=\""._sx('button', 'Save')."\" class='submit' >";
      echo "</td>";
      echo "</tr>";
      echo "</table>";
      Html::closeForm();
      echo "</div>";
   }
}

le code de NotificationTargetAlerteExtincteur.class.php

class PluginGestionalertesNotificationTargetAlerteExtincteur extends NotificationTarget {
   
   static $rightname = "plugin_gestionalertes";
   const AlerteExtincteur = "AlerteExtincteur";
   
  function getEvents() {
       return array (self::AlerteExtincteur => __("Date de fin de validité d'un extincteur",'gestionalertes'));
   }

   function getDatasForTemplate($event, $options = array()) {
	  global $CFG_GLPI;
	  
      $this->datas['##alerteextincteur.entity##']              = Dropdown::getDropdownName('glpi_entities', $options['entities_id']);
      $this->datas['##lang.alerteextincteur.entity##']         = __('Entity');
	  
	  $events = $this->getAllEvents();
	  
	  switch ($event) {
         case self::AlerteExtincteur:
			$this->datas['##alerteextincteur.action##'] = __("Date de fin de validité d'un extincteur", 'gestionalertes');
			break;
	  }
	  
	  $this->datas['##lang.alerteextincteur.name##']           = __('Name');
	  $this->datas['##lang.alerteextincteur.expirationdate##'] = __('Date de fin de validité', 'gestionalertes');
			
      foreach ($options['gestionalertes'] as $id => $alerteextincteur) {
        $tmp = array();

        $tmp['##alerteextincteur.name##']           = $alerteextincteur['name'];
        $tmp['##alerteextincteur.expirationdate##'] = Html::convDate($alerteextincteur['expirationdate']);
		
		$this->datas['gestionalertes'][] = $tmp;
      }
   }

   function getTags() {

      $tags = array('alerteextincteur.name'                    => __('Name'),
                    'alerteextincteur.expirationdate'          => __('Date de fin de validite', 'gestionalertes'));
      
      foreach ($tags as $tag => $label) {
         $this->addTagToList(array('tag'   => $tag, 
                                   'label' => $label,
                                   'value' => true));
      }

      $this->addTagToList(array('tag'     => 'gestionalertes',
                                'label'   => __("Date de fin de validité d'un extincteur",'gestionalertes'),
                                'value'   => false,
                                'foreach' => true,
                                'events'  => array(self::AlerteExtincteur)));
      
      asort($this->tag_descriptions);
   }
}

Merci d'avance !

Offline

#11 2018-02-22 17:54:35

yllen
GLPI-DEV
From: Sillery (51)
Registered: 2008-01-14
Posts: 14,104

Re: plugin - classes non reconnues

PHP notice n'est pas une erreur mais une information.
Cela correspond souvent à une variable non définie


CentOS 6.5 - CentOS 7
PHP 5.6 - PHP 7 - MySQL 5.6  + APC + oOPcache
GLPI from 0.72 to dev version
Certifiée ITIL (ITV2F, ITILF, ITILOSA)

Offline

Board footer

Powered by FluxBB