Des guillemets unicode exotiques cassent les liens
Je constate des liens eronnés dans les messages de notification envoyés par no-reply [at] seenthis.net, pour des posts issus de la syndication d’un site SPIP par seenthis.
Dans le feed généré view-source:https://www.passerelleco.info/?page=backend&dest=seenthis , le html a l’air correct, et le rendu affiché par seenthis est correct : https://seenthis.net/messages/1120888
C’est dans le mail seulement que se manifeste le problème : il y a plusieurs liens corrects mais celui après « Lire sur » est suffixé par un espèce de guillemet double qui le rend inopérant.
Dans le feed, on trouve
<a href="https://www.passerelleco.info/3326">Lire sur https://passerelleco.info/3326</a>
Par contre, dans le source du mail reçu on voit que le guillemet double est non ascii :
Lire sur https://passerelleco.info/3326âž
C’est en fait un ❞ = HEAVY DOUBLE COMMA QUOTATION MARK ORNAMENT qui a été introduit.
Je vois plusieurs endroits où seenthis introduit un tel glyphe perturbateur
- la fonction
message_texteveut « retransformer la version HTML d'un message en un texte utilisable sous ATOM (atom_me.html) ou par email (seenthis_notifier.php) » et ajoute ce glyphe en cas de blockquote :
$texte = preg_replace(",<blockquote[^>]*>( |\n)*,", "\n\n❝", $texte);
$texte = preg_replace(",( |\n)*<\/blockquote[^>]*>,", "❞\n\n", $texte);
Ça supposerait donc que le blockquote a été introduit, avant, ailleurs.
a.internal-link::after { content: '❞'; text-decoration: none;} }
Et effectivement, ça apparaît après le lien, mais je vois pas comment ce traitement css se traduirait par une alteration du texte du mail.
- Dans le repo squelettes, ya aussi 3 bouts de code qui insèrent ce glyphe, mais uniquement en javascript alors bof pour l'instant je les innocente. Par exemple https://git.spip.net/seenthis/squelettes/-/blob/master/javascript/seenthis/seenthis.js?ref_type=heads#L167 :
if (vals['extrait']) {
content += "\n❝" + vals['extrait'] + "❞\n";
}
J'ai ciblé en ne cherchant que dans les repo de l'organisation seenthis qui avaient reçu un commit depuis moins d'un an : seenthis, squeleton, squelettes et microcache.