Projet

Général

Profil

Actions

Anomalie #1280

fermé

problème avec le Mailing

Ajouté par Alain Paris il y a plus de 5 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
Core
Version cible:
Début:
14/05/2019
Echéance:
% réalisé:

100%

Temps estimé:
Version utilisée:

Description

Bonjour,
Je viens de découvrir semble t'il une anomalie dans le processus d'envoi de mail.

Je sélectionne dans la liste des adhérents, les destinataires de l'envoi.
Je me retrouve sur la page: http://galette9/webroot/mailing?new=new

1 le bouton "Gestion des adhérents sélectionnés" ne fonctionne pas.
2 le bouton "prévisualisation" renvoi la page : http://galette9/webroot/mailings ,je n'ai pas de fenêtre de prévisualisation.

Les messages sont envoyés correctement...

3 si on a ajouté un fichier joint et "prévisualisation" alors je me retrouve avec une erreur:

Type : Error      Code : 0      Message : Call to undefined method Galette\Core\Mailing::getPhpErrorMessage()     
Fichier : B:\galette9\includes\routes\members.routes.php Ligne : 2103

Testé sur Version0.9.2.1 et nightly.

Pour info l'envoi des courriers se fait en SMTP (PHP mail ne fonctionne pas chez moi). Je ne pense pas que cela influence l'anomalie.

Bonne fin de Journée


Fichiers

0001-Fix-unescaped-variable-in-mailing-template.patch (1,39 ko) 0001-Fix-unescaped-variable-in-mailing-template.patch Guillaume AGNIERAY, 13/09/2019 11:43
0001-Fix-wrong-smarty-modifier-value-fixes-1280.patch (1,67 ko) 0001-Fix-wrong-smarty-modifier-value-fixes-1280.patch Guillaume AGNIERAY, 17/09/2019 16:19
0001-Hotfix-refs-1280.patch (2,59 ko) 0001-Hotfix-refs-1280.patch Hotfix pour la dernière branche stable uniquement Guillaume AGNIERAY, 17/09/2019 16:19

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

  • Catégorie mis à Core
  • Statut changé de Nouveau à In Progress
  • Assigné à mis à Johan Cwiklinski

Je ne reproduit pas le premier point ; tout au moins sur la nightly courante. Puisque pas mal de choses ont été changées là dessus, ça a pu être corrigé ; il faudrait essayer.

Le second point est quant à lui effectivement un bug.

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

  • Statut changé de In Progress à Résolu
  • % réalisé changé de 0 à 100

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

  • Statut changé de Résolu à Fermé

Mis à jour par Alain Paris il y a plus de 5 ans

Bonjour,
Je crois que je viens de trouver le problème:
Le soucis vient du nom de l’expéditeur dans Paramètres courriel le fait de mettre une apostrophe provoque les 2 anomalies.
L'apostrophe :ne fonctionne pas
L apostrophe : ok

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

  • Statut changé de Fermé à In Progress

Ok je vais voir a corriger le souci d'apostrophe également :)

Mis à jour par Benjamin Leduc il y a plus de 5 ans

Johan Cwiklinski a écrit :

Appliqué par commit 349b6fc2cabb2a933c11ba561825eb2c932f0b04.

Bonjour,

Le point #1 n'est toujours pas fonctionnel chez moi, nightly du jour. Comment puis-je fournir des informations utile pour avancer?

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

Si le problème est le même que celui d'Alain (apostrophe), ce n'est juste pas corrigé, pas eu le temps.

Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans

La variable correspondante n'est pas échapée dans le template des mailings.
Ci-joint un correctif basé sur la branche develop, et ajoutant un modifieur smarty pour échapper la variable javascript fautive.

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

Merci pour le patch, ça devrait effectivement corriger le problème :)

Mis à jour par Alain Paris il y a plus de 5 ans

Bonjour,
Le patch doit modifier quoi pour l'utilisateur ?

J'ai essayé la modification du fichier (mailing_adherents.tpl) chez moi et je n'ai pas trouvé .

Cas no 1 : Apostrophe dans le nom de l’expéditeur (exemple "l’expéditeur")
situé dans Configuration (webroot/preferences) Courriel expéditeur :
Sur la page webroot/mailing
  • le bouton "Gestion des adhérents sélectionnés" ne fonctionne plus.
  • le bouton pour modifier l’expéditeur non plus (reste sur le courriel de "depuis les préférences").
  • lors de l'appui sur prévisualisation il y a un message d'avertissement si le sujet est vide ou message est vide.
    Si sujet et message sont complétés je n'ai pas la fenêtre pop-up avec la prévisualisation du mail.je me retrouve sur la page de gestion des mails (webroot/mailings).
Cas no 2 : pas d'apostrophe dans le nom (exemple "l expéditeur"):
  • Tous les boutons fonctionnent.
  • Il n'y a plus le message d'avertissement que le sujet ou le corps du message est vide par contre.
  • La fenêtre pop-up de prévisualisation fonctionne.
    Si l'on modifie l’expéditeur option "autre" et que celui-ci comporte une ou plusieurs apostrophe(s) prévisualisation fonctionne. ** Lorsque l'on choisi "Utilisateur actuellement connecté" ou "autre" on ne peut revenir sur "depuis les préférences" lorsque l'on a prévisualisé.

Le fonctionnement peut il dépendre de PHP ou de Mysql ou d'un de leurs modules? (testé sur PHP 7.2 et Mysql 5.53).

Il faudrait peut être une démo fonctionnelle en ligne pour voir le comportement normal.

Bonne Journée

Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans

  • Statut changé de In Progress à Résolu

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

La modification du seul fichier template sur la dernière stable ne sera clairement pas suffisante pour corriger les problèmes de javascript.
Je viens de tester avec la dernière nightly, je n'ai pas rencontré de problèmes.

À priori, sur la branche develop, le patch fourni par Guillaume termine de corriger les problèmes.

Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans

A posteriori, le patch ne termine pas de corriger le problème :/

Échapper la variable est la solution.

Mais je n'avais pas testé avant de produire le patch. En me basant sur l'utilisation du même modifieur ailleurs dans le code, j'avais réutilisé la même valeur : js. Mais selon la documentation smarty, la valeur dans ce cas devrait être : javascript

Ci-joint un nouveau patch sur la branche develop corrigeant cette valeur.
Et un "hotfix" complet incluant la révision 349b6fc2 pour la dernière branche stable.

Cette fois j'ai testé préalablement sur les 2 branches et ça fonctionne correctement :)

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

js pour l'échappement est utilisé partout dans le code de Galette, à priori, ça fonctionne sans problèmes ; beaucoup d'autres choses ne fonctionneraient pas.

Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans

Effectivement js est utilisé partout. Mais pas partout dans le même contexte : il y a l'échappement des chaînes de traduction et l'échappement des variables dans les templates.

Dans le cas des traductions, pas de problème, c'est un plugin smarty qui s'occupe de l'échappement : source:galette/includes/smarty_plugins/function._T.php#L69

Dans le cas des variables, c'est le modificateur smarty qui se charge de l'échappement.
Et alors, seule la valeur javascript peut être reconnue : https://github.com/smarty-php/smarty/blob/c9f0de05f41b9e52798b268ab1e625fac3b8578c/libs/plugins/modifier.escape.php#L177

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

En effet, tu as raison ; il y a deux cas de figure distincts, le "modifier" smarty est finalement peu utilisé. Il y avait d'autres cas problématiques que j'ai corrigés également au passage ; normalement, tout est d'équerre désormais.

Mis à jour par Guillaume AGNIERAY il y a plus de 5 ans

J'étais justement en train de préparer une nouvelle demande concernant les 2 autres cas problématiques corrigés.
Je suis donc d'avis également que tout est d'équerre désormais :)

Mis à jour par Johan Cwiklinski il y a plus de 5 ans

:) merci pour ta contribution !

Mis à jour par Johan Cwiklinski il y a environ 5 ans

  • Statut changé de Résolu à Fermé
Actions

Formats disponibles : Atom PDF