yeswiki icon indicating copy to clipboard operation
yeswiki copied to clipboard

Ajouter des helpers au EntryManager

Open J9rem opened this issue 3 years ago • 4 comments

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

J9rem avatar Aug 29 '21 11:08 J9rem

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.

acheype avatar Aug 29 '21 22:08 acheype

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)

mrflos avatar Aug 30 '21 07:08 mrflos

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

J9rem avatar Aug 30 '21 11:08 J9rem

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.

acheype avatar Sep 09 '21 09:09 acheype

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)

J9rem avatar Jun 23 '23 07:06 J9rem