interdit_html n'est pas défini pour crayonner un forum #10

Closed
opened 1 year ago by JLuc · 4 comments
JLuc commented 1 year ago
Collaborator

Sur un spip 4.0, avec crayons 2.3.0, le crayonnage d'un forum, lorsque l'autorisation le permet, se heurte à l'indéfinition de interdit_html() : Uncaught Error: Call to undefined function interdit_html() in ecrire/inc/filtres.php(4750) : eval()'d code:1. Ça se produit à la validation, dans l'action crayons_store.php en ligne 405 : appliquer_traitement_champ('texte du forum....', 'TEXTE', 'forums').

  • interdit_html est défini dans forum_fonctions.php qui n'est visiblement pas inclu dans une action
  • son insertion dans le code est fait par les traitements par défauts sur les forums (tels que définis dans forum_declarer_tables_interfaces)

La pile php :

#0 /ecrire/inc/filtres.php(4750): eval()
#1 /auto/crayons/v2.3.0/action/crayons_store.php(405): appliquer_traitement_champ('texteduforum...', 'TEXTE', 'forums')
#2 /auto/crayons/v2.3.0/action/crayons_store.php(223): vues_dist('forum', 'texte', '46654', Array, 'wid60fd57444d2e...')
#3 /auto/crayons/v2.3.0/action/crayons_store.php(603): crayons_store()
#4 /auto/crayons/v2.3.0/action/crayons_store.php(592): action_crayons_store_args()
#5 /ecrire/public/aiguiller.php(74): action_crayons_store_dist()
#6 in /ecrire/inc/filtres.php(4750) : eval()'d code on line 1
Sur un spip 4.0, avec crayons 2.3.0, le crayonnage d'un forum, lorsque l'autorisation le permet, se heurte à l'indéfinition de `interdit_html()` : `Uncaught Error: Call to undefined function interdit_html() in ecrire/inc/filtres.php(4750) : eval()'d code:1`. Ça se produit à la validation, dans l'action `crayons_store.php` en ligne 405 : `appliquer_traitement_champ('texte du forum....', 'TEXTE', 'forums')`. - `interdit_html` est défini dans `forum_fonctions.php` qui n'est visiblement pas inclu dans une action - son insertion dans le code est fait par les traitements par défauts sur les forums (tels que définis dans `forum_declarer_tables_interfaces`) La pile php : ``` #0 /ecrire/inc/filtres.php(4750): eval() #1 /auto/crayons/v2.3.0/action/crayons_store.php(405): appliquer_traitement_champ('texteduforum...', 'TEXTE', 'forums') #2 /auto/crayons/v2.3.0/action/crayons_store.php(223): vues_dist('forum', 'texte', '46654', Array, 'wid60fd57444d2e...') #3 /auto/crayons/v2.3.0/action/crayons_store.php(603): crayons_store() #4 /auto/crayons/v2.3.0/action/crayons_store.php(592): action_crayons_store_args() #5 /ecrire/public/aiguiller.php(74): action_crayons_store_dist() #6 in /ecrire/inc/filtres.php(4750) : eval()'d code on line 1 ```
JLuc commented 1 year ago
Poster
Collaborator

Par contre ya pas ce problème sur https://contrib.spip.net en SPIP 4.0 beta.

Par contre ya pas ce problème sur https://contrib.spip.net en SPIP 4.0 beta.
JLuc commented 1 year ago
Poster
Collaborator

appliquer_traitement_champ inclue inc/texte "car la majorité des traitements les utilisent et il ne faut pas partir du principe que c'est déjà chargé (form ajax, etc)".

Du coup

  • faudrait il mettre interdit_html dans inc/texte, de même qu'il y a interdire_scripts ?
  • faut il un nouveau mécanisme de déclaration et d'inclusion des traitements, pour les forums et tout autre objet ?
`appliquer_traitement_champ` inclue `inc/texte` "_car la majorité des traitements les utilisent et il ne faut pas partir du principe que c'est déjà chargé (form ajax, etc)_". Du coup - faudrait il mettre `interdit_html` dans `inc/texte`, de même qu'il y a `interdire_scripts` ? - faut il un nouveau mécanisme de déclaration et d'inclusion des traitements, pour les forums et tout autre objet ?
Owner

Non il faudrait simplement que appliquer_traitement_champ appelle plutot include_fichiers_fonctions() qui permet d'avoir tous les filtres disponibles comme sur un calcul de squelette (cela incluera inc/texte aussi par ricochet)
https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/utils.php#L179

Non il faudrait simplement que `appliquer_traitement_champ` appelle plutot `include_fichiers_fonctions()` qui permet d'avoir tous les filtres disponibles comme sur un calcul de squelette (cela incluera `inc/texte` aussi par ricochet) https://git.spip.net/spip/spip/src/branch/master/ecrire/inc/utils.php#L179
JLuc commented 1 year ago
Poster
Collaborator

J'ai essayé et en effet ça marche bien avec include_fichiers_fonctions à la place de inclure_spip (inc/texte). Tout de même, et bien que mes tests semblent montrer qu'il n'est pas nécessaire d'inclure_spip (inc/texte) en plus, je n'en suis pas totalement persuadé...

Ma PR spip/spip#4855 est crade mais j'arrive pas à la cleaner. Et je dois arrêter là pour l'instant.

J'ai essayé et en effet ça marche bien avec `include_fichiers_fonctions` **à la place de** `inclure_spip (inc/texte)`. Tout de même, et bien que mes tests semblent montrer qu'il n'est pas nécessaire d'`inclure_spip (inc/texte)` en plus, je n'en suis pas totalement persuadé... Ma PR https://git.spip.net/spip/spip/pulls/4855 est crade mais j'arrive pas à la cleaner. Et je dois arrêter là pour l'instant.
cerdic closed this issue 1 year ago
Sign in to join this conversation.
No Label
No Milestone
No Assignees
2 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.