yeswiki
yeswiki copied to clipboard
Ajouter des helpers au EntryManager
Type of issue (keep only one) / Type de demande (ne garder qu'une ligne) New feature / Nouvelle fonctionnalité
Description Ajouter des helpers au EntryManager
- addValue()
- removeValue()
- updateValue()
- renameAttribute()
Objectifs :
- permettre aux handlers __update de faire des modifications de la base sql sans faire trop de dégats
car il semblerait que le regexp ne fonctionne pas sur toutes les types de bases ET introduise par exemple un mauvais encodage de
""
en json (ça reste""
au lieu de\"\"
)
voir https://github.com/YesWiki/yeswiki/blob/725f5aa1698e1484301482d0317dc2442bdac41c/handlers/page/update.php#L47
Additionnal informations / Informations complémentaires
- version of YesWiki / version de YesWiki Doryphore 2021-08-29-1
Salut, Je suis en itinérance mais préfère déjà donner quelques éléments. Je n'ai perso pas l'impression que c'est un gros soucis. Effectivement la fonction regexp_replace n'est pas accessible pour les versions de MySQL avant la V8 et pour MariaDb, avant la V10. Mais si le nettoyage du champ n'est pas fait, cela n'empêche aucune fonctionnalité de fonctionner. Je suis pas sûr de comprendre pourquoi tu parles d'un mauvais encodage pour le Json. As-tu vu des cas où cela pose soucis ? Effectivement, il n'y a pas de caractère d'échappement dans le format Json normalement mais de mémoire c'est comme cela que sont écrits les Json de chaque fiche dans la base.
Par contre, je trouverais effectivement cela intéressant d'avoir de telles méthodes même si ces dernières seront réécrites le jour où on passera à postgres pour gérer le Json nativement.
Hello, en fait c'est un gros soucis car il y a destruction de données cf. https://co-construire.be/?CahierDActiviteTiersLieux ou le double " casse le parsing json pourtant ya des données https://co-construire.be/?CahierDActiviteTiersLieux/raw
Après on n'est pas 100% sur que la déterioration vienne du handler /update , c'est une piste sérieuse car la creation/modif/suppression marche par bazar, et le /update est parmi les seuls handlers à modifier les contenus des champs body.
Et tant qu'a faire, puisque regexp_replace ne marche pas de partout, autant faire autrement, et un helper removeFieldValue('createur') serait bien utile!
Apres, en effet le jour ou tout sera en json, faudra repasser la dessus, mais pour l'instant ce bug est bloquant pour migrer vers doryphore (s'il est avéré que c'est bien cela qui provoque le probleme)
Je viens d'ouvrir une branche de travail où je vous propose des idées pour pouvoir retirer les champs bazar de façon plus sûre
Merci pour avoir précisé le bug @mrflos car je comprenais pas avec les premières explications.
Pour l'exemple donné de coconstruire, je n'ai pas l'impression que ça vienne de là. Je soupsçonne plus que ça vient du ""GitHub""
dans bf_description où à chaque fois les deux "" ne sont pas échappés avec . Je comprends comment il a pu les enregistrer de cette façon et ce n'est pas la regexp qui a enlevé les ... J'ai testé au cas où l'enregistrement d'une chaîne de caractère similaire avec les 3 types de textelong qu'on a, et je ne suis pas arrivé à le reproduire...
Quoiqu'il en soit, c'est chouette de vous voir rendre doryphore le plus stable possible.
Je clos cette issue car il existe actuellement 2 premiers helpers et qu'il ne semble pas y avoir de demande particulière en cours sur le sujet (ni d'envie spécifique)