Annonce

#1 2016-11-24 17:39:49

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Lien hypertexte dans un tag personnalisé

Bonjour,
je viens d'installer la version 3.0 de Wanewsletter en vue de remplacer ma 2.3.3 actuelle.
Les tests se déroulent plutôt bien excepté pour un tag personnalisé qui contient une URL. Il se trouve que cette URL est recopiée telle qu'elle est en base de données et qu'il n'y a pas de reconversion en HTML comme cela est le cas avec la version 2.3.3
Voici comment le système fonctionne chez moi :
Mes visiteurs souscrivent à la la newsletter via ma boutique OSCommerce (dont le moteur de newsletter est tout sauf fiable à mon goût). J'ai un peu modifié la page d'index de Wanewsletter pour qu'une synchronisation des abonnés de la boutique OSCommerce soit dupliquée sur la table des destinataires de Wanewsletter. Cette partie là fonctionne impeccablement. Les tags personnalisés me servent à insérer les liens de désabonnement qui iront taper dans la base de données de la boutique pour désinscrire l'utilisateur.
Il y a donc deux tags personnalisés pour les liens de désabonnement qui ont été ajoutés en base de données:
"unsubscribe_fr" contenant un texte du type

Si vous ne souhaitez plus recevoir de messages de notre part, veuillez <a href="http://xyz.nomdedomaine.fr/unsubscribe.php?language=fr&emailname=username&emaildomain=email.fr">cliquer ici</a>

et "unsubscribe_en" contenant à peu près la même chose traduite en anglais:

If you do not wish to receive emails from us anymore, please <a href="http://xyz.nomdedomaine.fr/unsubscribe.php?language=en&emailname=username&emaildomain=email.fr">click here.</a>

Jusqu'ici, j'avais bien mon lien qui s'affichait proprement. Maintenant, les balises HTML sont elles aussi affichées dans le texte du mail et les liens ne sont pas toujours cliquables en fonction du client de messagerie ou du webmail utilisé.

Existe-t-il un moyen de faire passer ces tags comme avant ou bien au moins une astuce pour rendre le lien cliquable?


Je suis en hébergement mutualisé OVH avec PHP5.6 mais je ne pense pas que cela ait une quelconque importance ici.

Merci de la réponse que vous pourrez m'apporter.

Hors ligne

#2 2016-11-29 16:58:49

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Lien hypertexte dans un tag personnalisé

C'est problématique car il n'est pas prévu que les tags personnalisés injectent du html, la fonction htmlspecialchars() est d'ailleurs appelée sur chacun d'entre eux avant insertion dans le texte.

D'ailleurs, c'était le cas aussi dans la version 2.3.3, donc je ne comprends pas comment ça peut marcher chez vous :
https://github.com/wascripts/wanewslett … d.php#L525

Dans la version 3, ça se passe dans la classe Sender :
https://github.com/wascripts/wanewslett … r.php#L479

Vous pourriez ajouter && $tag['column_name'] != 'unsubscribe_fr' && $tag['column_name'] != 'unsubscribe_en' dans le if.
Pas top car vous devrez rechanger cette partie après une éventuelle mise à jour, mais ça aura le mérite de marcher smile


PHP et MySQL, un duo gagnant !

Hors ligne

#3 2016-11-29 17:19:41

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

Vous pourriez ajouter && $tag['column_name'] != 'unsubscribe_fr' && $tag['column_name'] != 'unsubscribe_en' dans le if.
Pas top car vous devrez rechanger cette partie après une éventuelle mise à jour, mais ça aura le mérite de marcher smile

Je ne dois pas m'y prendre correctement car lorsque j'ajoute ces instructions, l'envoi ne se fait tous simplement pas.
J'ai modifié le fichier comme ça:

			foreach ($tags_list as $tag) {
				if (isset($data[$tag['column_name']])) {
					if (!is_numeric($data[$tag['column_name']]) && $data['format'] == FORMAT_HTML) 
					&& $tag['column_name'] != 'unsubscribe_fr' && $tag['column_name'] != 'unsubscribe_en'
					{
						$data[$tag['column_name']] = htmlspecialchars($data[$tag['column_name']]);
					}

					$tags_to_replace[$tag['tag_name']] = $data[$tag['column_name']];

					continue;
				}

Edit:
j'ai finalement trouvé mon erreur. Il fallait que je les ajoute entre les parenthèses. Il faut dire que je ne pratique pas le PHP bien souvent wink
Ca donne ça au final:

			foreach ($tags_list as $tag) {
				if (isset($data[$tag['column_name']])) {
					if (!is_numeric($data[$tag['column_name']]) && $data['format'] == FORMAT_HTML 
					&& $tag['column_name'] != 'unsubscribe_fr' && $tag['column_name'] != 'unsubscribe_en')
					{
						$data[$tag['column_name']] = htmlspecialchars($data[$tag['column_name']]);
					}

					$tags_to_replace[$tag['tag_name']] = $data[$tag['column_name']];

					continue;
				}

Merci, ça va m'aider à avancer. Je me garde ce bout de code sous le coude en cas de MAJ.

Dernière modification par creexus (2016-11-29 17:24:52)

Hors ligne

#4 2016-11-29 17:33:54

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Lien hypertexte dans un tag personnalisé

Pourquoi ne mettez-vous pas directement "Si vous ne souhaitez plus recevoir de messages de notre part, veuillez <a href="http://xyz.nomdedomaine.fr/unsubscribe.php?language=fr&emailname={NAME}&emaildomain={WA_EMAIL}">cliquer ici</a>" dans votre newsletter ? (bien sûr, il faudra que le champ abo_pseudo soit renseigné en conséquence dans la base de données).

edit: ok, j'avais mal compris la construction de l'url. il n'est pas possible de passer directement l'adresse email complète à ce script unsubscribe.php ?


PHP et MySQL, un duo gagnant !

Hors ligne

#5 2016-11-29 17:37:33

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

Bobe a écrit :

Pourquoi ne mettez-vous pas directement "Si vous ne souhaitez plus recevoir de messages de notre part, veuillez <a href="http://xyz.nomdedomaine.fr/unsubscribe.php?language=fr&emailname={NAME}&emaildomain={WA_EMAIL}">cliquer ici</a>" dans votre newsletter ? (bien sûr, il faudra que le champ abo_pseudo soit renseigné en conséquence dans la base de données).

C'est pas bête wink
De cette manière, je pourrais conserver le fichier sender dans son état d'origine. Je suppose qu'il vaut mieux éviter les doublons pour ce champ abo_pseudo. Peut-il être une adresse email?

Hors ligne

#6 2016-11-29 17:45:37

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Lien hypertexte dans un tag personnalisé

Il faudrait pouvoir utiliser {WA_EMAIL}, mais ça donne l'adresse email complète. Si votre script unsubscribe.php accepte un argument permettant de lui transmettre l'adresse email en un seul morceau, c'est jouable. (voyez s'il est possible d'utiliser une adresse url telle que http://xyz.nomdedomaine.fr/unsubscribe. … WA_EMAIL})


PHP et MySQL, un duo gagnant !

Hors ligne

#7 2016-11-29 17:48:40

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

Bobe a écrit :

Il faudrait pouvoir utiliser {WA_EMAIL}, mais ça donne l'adresse email complète. Si votre script unsubscribe.php accepte un argument permettant de lui transmettre l'adresse email en un seul morceau, c'est jouable. (voyez s'il est possible d'utiliser une adresse url telle que http://xyz.nomdedomaine.fr/unsubscribe. … WA_EMAIL})

Non justement, ce script ne le prend pas en charge, autrement la tâche aurait été bien plus simple. Pourquoi le champ pseudo est nécessaire?

Hors ligne

#8 2016-11-29 17:56:59

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Lien hypertexte dans un tag personnalisé

j'ai bètement pensé que emailname était juste le "pseudo" de la personne.

Dans ce cas, vous pourriez créer deux tags personnalisés contenant les deux morceaux de l'adresse email, et pouvoir ainsi les utiliser dans la newsletter.


PHP et MySQL, un duo gagnant !

Hors ligne

#9 2016-11-29 18:40:55

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

Bobe a écrit :

j'ai bètement pensé que emailname était juste le "pseudo" de la personne.

Dans ce cas, vous pourriez créer deux tags personnalisés contenant les deux morceaux de l'adresse email, et pouvoir ainsi les utiliser dans la newsletter.

Exact. C'est à ça que je pensais. Je testerai ça des que possible. Merci pour ces suggestions en tous cas smile

Hors ligne

#10 2016-12-02 15:32:57

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

C'est bon, je m'en suis sorti en utilisant les tags "nickname" et "emaildomain", comme ça, j'ai pu ajouter mon lien de désinscription de cette façon:

Si vous ne souhaitez plus recevoir de messages de notre part, veuillez <a href="http://xyz.nomdedomaine.fr/unsubscribe.php?language=fr&emailname={NICKNAME}&emaildomain={EMAILDOMAIN}">cliquer ici</a>

Ce qui me permet de rester compatible avec les futures MAJ. Merci pour cette idée wink

Dernière modification par creexus (2016-12-02 15:33:18)

Hors ligne

#11 2016-12-02 18:05:02

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Lien hypertexte dans un tag personnalisé

Ok.
Et pour renseigner ces tags dans la base de données ?


PHP et MySQL, un duo gagnant !

Hors ligne

#12 2016-12-02 18:38:49

creexus
Membre
Inscription : 2016-11-24
Messages : 7

Re : Lien hypertexte dans un tag personnalisé

Bobe a écrit :

Ok.
Et pour renseigner ces tags dans la base de données ?

Pas de souci. J'ai juste eu à ajouter deux colonne sur la table des abonnés et mon script de synchro fait le reste smile

Hors ligne

Pied de page des forums