Fatale sur `generer_objet_info()` #5239

Closed
opened 3 months ago by cerdic · 2 comments
cerdic commented 3 months ago
Owner

Un appel à generer_objet_info(123, 'rubrique', 'titre') provoque une fatale car la fonction typo n'est pas définie.

Le bug a été introduit suite au patch
080e79daca
issu de le PR
#4855
qui fixait
spip-contrib-extensions/crayons#10

Et @JLuc avait raison (spip-contrib-extensions/crayons#10) : la fonction include_fichiers_fonctions() ne provoque pas l'inclusion automatique de inc/texte.

Je me suis demandé où fixer:

  • dans la fonction appliquer_traitement_champ() que l'on a modifié ?
  • via une inclusion depuis un fichier fonction du plugin textwheel ?
  • via une inclusion depuis le fichier public/fonctions.php

Après réflexion je propose cette dernière solution car ce n'est pas inhérent à Textwheel (les traitements sont définis dans le core, et le fichier inc/texte fait partie du core même si surchargé par textwheel), et je pense que le problème peut arriver dans une autre fonction que appliquer_traitement_champ()

Ce qui donnerait

diff --git a/ecrire/public/fonctions.php b/ecrire/public/fonctions.php
index 62753e925..8372bdceb 100644
--- a/ecrire/public/fonctions.php
+++ b/ecrire/public/fonctions.php
@@ -26,6 +26,9 @@ if (!defined('_ECRIRE_INC_VERSION')) {
 	return;
 }

+// public/interfaces definit des traitements sur les champs qui utilisent des fonctions de inc/texte
+// il faut donc l'inclure des qu'on inclue les filtres et fonctions de SPIP car sinon on a potentiellement des fatales
+include_spip('inc/texte');
Un appel à `generer_objet_info(123, 'rubrique', 'titre')` provoque une fatale car la fonction typo n'est pas définie. Le bug a été introduit suite au patch https://git.spip.net/spip/spip/commit/080e79dacae01bc8d6de14048aa11638cd4a6533 issu de le PR https://git.spip.net/spip/spip/pulls/4855 qui fixait https://git.spip.net/spip-contrib-extensions/crayons/issues/10 Et @JLuc avait raison (https://git.spip.net/spip-contrib-extensions/crayons/issues/10#issuecomment-27177) : la fonction `include_fichiers_fonctions()` ne provoque pas l'inclusion automatique de `inc/texte`. Je me suis demandé où fixer: * dans la fonction `appliquer_traitement_champ()` que l'on a modifié ? * via une inclusion depuis un fichier fonction du plugin textwheel ? * via une inclusion depuis le fichier `public/fonctions.php` Après réflexion je propose cette dernière solution car ce n'est pas inhérent à Textwheel (les traitements sont définis dans le core, et le fichier `inc/texte` fait partie du core même si surchargé par textwheel), et je pense que le problème peut arriver dans une autre fonction que `appliquer_traitement_champ()` Ce qui donnerait ``` diff --git a/ecrire/public/fonctions.php b/ecrire/public/fonctions.php index 62753e925..8372bdceb 100644 --- a/ecrire/public/fonctions.php +++ b/ecrire/public/fonctions.php @@ -26,6 +26,9 @@ if (!defined('_ECRIRE_INC_VERSION')) { return; } +// public/interfaces definit des traitements sur les champs qui utilisent des fonctions de inc/texte +// il faut donc l'inclure des qu'on inclue les filtres et fonctions de SPIP car sinon on a potentiellement des fatales +include_spip('inc/texte'); ```
cerdic added this to the 4.1 milestone 3 months ago
cerdic added the
bug
label 3 months ago
Owner

+1 pour ta proposition qui a l'avantage de régler le problème de manière globale :)

+1 pour ta proposition qui a l'avantage de régler le problème de manière globale :)

+1 aussi

+1 aussi
cerdic closed this issue 3 months ago
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.