Issue #5095 : Ne pas casser une meta serializee quand un utilisateur saisit un emoji dans un formulaire de configuration #5176

Open
cerdic wants to merge 1 commits from issue_5095 into master
cerdic commented 2 weeks ago
Owner

C'est un fix partiel, a minima, qui traite un cas d'usage (les formulaires de configuration), mais au moins c'est sans rupture de compatibilité

Dans ecrire_config() on regarde si le contenu contient des planes qui risquent d'être convertis en entites html.
Dans ce cas, après ecriture en base de la valeur serializee on relit sql pour verifier que la valeur est identique. Si elle a été modifiée, alors on applique utf8_noplanes recursivement sur le tableau de config avant de le re-serializer et ecrire en base.

Ainsi dans le cas d'une base sqlite ou mysql en utf8mb4 dans lequel l'utilisateur aurait fait un define('_MYSQL_NOPLANES',false); rien ne change.

Si on a une base mysql en utf8 normal, alors les emoji longs sont remplacés par une entite html en base. C'est moche au retour sur le form de config, mais au moins c'est fonctionnel et on ne perds pas le reste de la config...

Ce patch ne traite pas le problème de fond, mais peut être reporté sur les versions stables sans risque

C'est un fix partiel, a minima, qui traite un cas d'usage (les formulaires de configuration), mais au moins c'est sans rupture de compatibilité Dans ecrire_config() on regarde si le contenu contient des planes qui risquent d'être convertis en entites html. Dans ce cas, après ecriture en base de la valeur serializee on relit sql pour verifier que la valeur est identique. Si elle a été modifiée, alors on applique utf8_noplanes recursivement sur le tableau de config avant de le re-serializer et ecrire en base. Ainsi dans le cas d'une base sqlite ou mysql en utf8mb4 dans lequel l'utilisateur aurait fait un `define('_MYSQL_NOPLANES',false);` rien ne change. Si on a une base mysql en utf8 normal, alors les emoji longs sont remplacés par une entite html en base. C'est moche au retour sur le form de config, mais au moins c'est fonctionnel et on ne perds pas le reste de la config... Ce patch ne traite pas le problème de fond, mais peut être reporté sur les versions stables sans risque
cerdic added 1 commit 2 weeks ago

Ca ressemble (en plus complet) à ce que j'avias proposé en #5094, dans e716f24efc. Donc pour moi oui c'est une bonne idée à court terme.

Je compléterai volontier avec db62106010 (ou autre code inspiré), qui permet de retrouver les emoji tels que saisis, et pas sous forme d'entité HTML.

Ca ressemble (en plus complet) à ce que j'avias proposé en #5094, dans e716f24efc1bcd524da76b710324f12c4961e46e. Donc pour moi oui c'est une bonne idée à court terme. Je compléterai volontier avec db6210601065c2397dd0d0bcfa3552f4ec25fddd (ou autre code inspiré), qui permet de retrouver les emoji tels que saisis, et pas sous forme d'entité HTML.
b_b reviewed 1 week ago
else {
if (
defined('_MYSQL_NOPLANES')
b_b commented 1 week ago
Poster
Owner

drôle d'indentation ici

drôle d'indentation ici
b_b reviewed 1 week ago
b_b left a comment

pétouille...

b_b commented 1 week ago
Owner

Je n'ai pas vraiment d'avis sur la question, mais je rejoins @maieul sur l'idée de "retrouver les emoji tels que saisis, et pas sous forme d'entité HTML" dans les forms de conf au minimum puisqu'on agit que sur ceux là ici.

Je n'ai pas vraiment d'avis sur la question, mais je rejoins @maieul sur l'idée de "retrouver les emoji tels que saisis, et pas sous forme d'entité HTML" dans les forms de conf au minimum puisqu'on agit que sur ceux là ici.
Owner

Bah on peut difficilement savoir ce qui était saisi à l’origine en fait (même si on peut supposer que c’était effectivement un emoji utf8)

Bah on peut difficilement savoir ce qui était saisi à l’origine en fait (même si on peut supposer que c’était effectivement un emoji utf8)

Effectivement, on peut difficlement savoir ce qui a été saisi à l'origine. Mais converti en terme d'interface utilisateurice une entité HTML en emoji me semble moins grave que l'inverse ;)

Effectivement, on peut difficlement savoir ce qui a été saisi à l'origine. Mais converti en terme d'interface utilisateurice une entité HTML en emoji me semble moins grave que l'inverse ;)
This pull request can be merged automatically.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
Sign in to join this conversation.
Loading…
There is no content yet.