Pipeline souscription_trig_bank_notifier_reglement: envoi des mails même quand la transaction SPIP Bank ne concerne pas le plugin souscription
Bonjour,
Dans le cas où on a un autre plugin SPIP qui utilise SPIP Bank pour gérer des paiements, le plugin Souscription envoie des mails de notif à tord pour ces paiements.
L'erreur est dans le pipeline souscription_trig_bank_notifier_reglement:
Dans les autres pipelines, le fait que la transaction soit liées au plugin Souscription est fait implicitement par des if
du type:
if (
$id_transaction = $flux['args']['id_transaction']
and $r = sql_fetsel('statut,montant,abo_uid', 'spip_transactions', 'id_transaction=' . intval($id_transaction))
and ($sous = sql_fetsel('*', 'spip_souscriptions', 'id_transaction_echeance=' . intval($id_transaction))
or $sous = sql_fetsel('*', 'spip_souscriptions', 'abonne_uid=' . sql_quote($r['abo_uid']) . ' AND abo_statut=' . sql_quote('ok')))
) {
// [...]
Ou encore:
if (
$id_transaction = $flux['args']['id_transaction']
and $r = sql_fetsel('statut,montant', 'spip_transactions', 'id_transaction=' . intval($id_transaction))
and $sous = sql_fetsel('id_souscription', 'spip_souscriptions_liens', ['objet=' . sql_quote('transaction'), 'id_objet=' . intval($id_transaction)])
) {
Il y a toujours une requête qui cherche dans spip_souscriptions (ou spip_souscriptions_lien) sur id_transaction, et si ce n'est pas trouvé, on passe son tour.
Ce qui n'est pas le cas pour souscription_trig_bank_notifier_reglement.
Remarque: ces tests sont fait de manière très implicite, et j'ai l'impression qu'on gagnerait à les rendre plus explicites. Par exemple en regardant systématiquement dans la ligne de spip_transactions si le parrain est bien le plugin souscription.