Remplacer / Désactiver un trigger core Dolibarr

Bonjour à tous,

J’ai le même soucis non résolu qu’ici :

Je souhaite remplacer :
interface_50_modTicket_TicketEmail.class
Par :
interface_99_modAmeliorationTickets_AmeliorationTicketsTriggers.class.php

Ou désactiver le trigger natif pour laisser seulement le mien.

Quelqu’un a t’il une idée de comment faire ?

Par avance merci

Il me semble que ce sont des fichiers « optionnels », dans le sens où le script n’exécute pas un fichier précis mais il exécute les fichiers présents dans un dossier précis.
La première solution qui me vient est assez radicale mais je n’en vois pas d’autres. C’est de commencer par déplacer le fichier dans un dossier de sauvegarder, ou de le renommer en commençant le nom par backup_ par exemple (voir le supprimer complètement s’il est vraiment inutile pour vous).
Puis, en prévision des future mises à jour de Dolibarr, de vérifier si le fichier existe dans un hook doAction (les hooks doActions sont les premiers exécutés), et de le supprimer/renommer/déplacer si c’est le cas.
Car une mise à jour de Dolibarr installera à nouveau ce fichier.

1 « J'aime »

Merci pour ta solution ! Je me tire les cheveux avec ça depuis ce matin :slight_smile:
C’est vrai que c’est tout con et ça marche ce que tu proposes bien que ça ne soit pas optimisé ça fera l’affaire.
Je pensais que dolibarr avait ce genre de fonctions et je m’étonne vraiment que ça n’existe pas (peut-être infaisabilité technique). A l’occasion j’essaierai de contribuer sur le github de Dolibarr avec un truc du genre, ce que je pensais faire :

if (!empty($conf->ticket->enabled)) {
    $ticketTriggers = getTriggers("ticket"); //retourne un array
    setOffTrigger($ticketTriggers[1]); //désactive le trigger en laissant le fichier (c'est tout le mécanisme à créer)
}

C’est ça l’idée que je m’en faisais mais je crois que le principal problème vient du fait que ce sont uniquement des fichiers et non des entités, à l’occassion j’essaierai de créer des entités sur le github ça serait quand meme vachement plus propre que là ce que je vais faire. Mais bien vu pour la solution, ça va bien me dépanner.

Bonjour

Pourquoi ne pas nommer le fichier interface_40_modAmeliorationTickets_AmeliorationTicketsTriggers.class.php

Fred

1 « J'aime »

Salut !
Car les 2 trigggers ont la même fonction :slight_smile:
Je veux faire mon propre mail d’assignation au ticket, j’ai donc fait un trigger.
Si je suis ta méthode mon mail sera envoyé mais le mail natif de dolibarr sera également envoyé en second.
C’est étrange qu’il n’y ai pas de moyen de désactiver / activer ou surcharger un trigger.

Bonjour

Tu as essayé dans ton trigger de faire $conf->global->TICKET_NOTIFICATION_EMAIL_TO = ""; ou $object->context['disableticketemail'] = 1;

Fred

1 « J'aime »

Si c’est juste pour remplacer l’email, ça semble être une meilleure solution que la mienne