[SPIP Zone] spip[10968] + cs + Glossaire cassé ?

Bonjour,

Pour info: L'activation de la lame Glossaire du couteau_suisse[17441] provoque dans l'espace public:

    Erreur...
    Fichier parametrer.php introuvable

et dans spip.log:

    fonction parametrer ( ou Glossaire) indisponible

--
J'ai essayé de comprendre, mais je n'ai rien trouvé...:frowning:

F.Moinard

Frédéric Moinard a écrit :

Bonjour,

Pour info: L'activation de la lame Glossaire du couteau_suisse[17441] provoque dans l'espace public:

    Erreur...
    Fichier parametrer.php introuvable

et dans spip.log:

    fonction parametrer ( ou Glossaire) indisponible

--
J'ai essayé de comprendre, mais je n'ai rien trouvé...:frowning:

F.Moinard

Ah oui,j'ai vu que les includes marchaient plus...
C'est depuis la nouvelle gestion de charger_fonction, find_in_path et include_spip....
Suis vite retourné en 10931
A voir si le pb persiste...

Pat

> Pour info: L'activation de la lame Glossaire du couteau_suisse[17441]
> provoque dans l'espace public:
>
> Erreur...
> Fichier parametrer.php introuvable
>
> et dans spip.log:
>
> fonction parametrer ( ou Glossaire) indisponible
>
> --
> J'ai essayé de comprendre, mais je n'ai rien trouvé...:frowning:
>
> F.Moinard
>
Ah oui,j'ai vu que les includes marchaient plus...
C'est depuis la nouvelle gestion de charger_fonction, find_in_path et
include_spip....
Suis vite retourné en 10931
A voir si le pb persiste...

Normalement ces modifs sont d'ordre interne et ne doivent pas avoir le
moindre impact sur l'usage qu'on en fait. Je mets esj en copie, ça
pourrait aider si tu nous disais quelle forme prendre l'inclusion ne
passe plus

-- Fil

Bon, j'ai mis la main à/dans la pâte. J'ai trouvé le bug.

Il y a un *conflit de noms de variable* ($f !) entre :

  utils.php : function charger_fonction(), ligne 41
    include_once $inc;
    if (function_exists($f)) return $f;
    if (function_exists($g)) return $g;

et :
  public/parametrer.php : ligne 24
    if ($f = find_in_path('mes_fonctions.php')
    OR $f = find_in_path('mes_fonctions.php3')) {
      global $dossier_squelettes;
      include ($f);
    }

Voici des variables à renommer de toute urgence.
Les traitements de balises sont actuellement cassés.
Pas besoin de ticket pour ça ?

Pat

Fil a écrit :

Pour info: L'activation de la lame Glossaire du couteau_suisse[17441]
provoque dans l'espace public:

    Erreur...
    Fichier parametrer.php introuvable

et dans spip.log:

    fonction parametrer ( ou Glossaire) indisponible

--
J'ai essayé de comprendre, mais je n'ai rien trouvé...:frowning:

F.Moinard

Ah oui,j'ai vu que les includes marchaient plus...
C'est depuis la nouvelle gestion de charger_fonction, find_in_path et
include_spip....
Suis vite retourné en 10931
A voir si le pb persiste...

Normalement ces modifs sont d'ordre interne et ne doivent pas avoir le
moindre impact sur l'usage qu'on en fait. Je mets esj en copie, ça
pourrait aider si tu nous disais quelle forme prendre l'inclusion ne
passe plus

-- Fil

Pat a écrit :

Bon, j'ai mis la main à/dans la pâte. J'ai trouvé le bug.

Il y a un *conflit de noms de variable* ($f !) entre :

  utils.php : function charger_fonction(), ligne 41
    include_once $inc;
    if (function_exists($f)) return $f;
    if (function_exists($g)) return $g;

et :
  public/parametrer.php : ligne 24
    if ($f = find_in_path('mes_fonctions.php')
    OR $f = find_in_path('mes_fonctions.php3')) {
      global $dossier_squelettes;
      include ($f);
    }

Voici des variables à renommer de toute urgence.

Avec une fonction comme suit, tout rentre dans l'ordre lorsque include_spip('public/parametrer') (ou similaire) est appellé :

function charger_fonction($nom, $dossier='exec', $continue=false) {

  if (substr($dossier,-1) != '/') $dossier .= '/';

  if (function_exists($f_ = str_replace('/','_',$dossier) . $nom))
    return $f_;
  if (function_exists($g_ = $f_ . '_dist'))
    return $g_;

  // Sinon charger le fichier de declaration si plausible

  if (!preg_match(',^\w+$,', $f_))
    die(htmlspecialchars($nom)." pas autorise");

  // passer en minuscules (cf les balises de formulaires)
  $inc = find_in_path(($d_ = strtolower($nom) . '.php'), $dossier);
  if ($inc) {
    include_once $inc;
    if (function_exists($f_)) return $f_;
    if (function_exists($g_)) return $g_;
  }
  if ($continue) return false;

  // Echec : message d'erreur
  spip_log("fonction $nom ($f_ ou $g_) indisponible" .
    ($inc ? "" : " (fichier $d_ absent de $dossier)"));

  include_spip('inc/minipres');
  echo minipres(_T('forum_titre_erreur'),
     _T('fichier_introuvable', array('fichier'=> '<b>'.htmlentities($d_).'</b>')));
  exit;
}

Bonjour,

Pat a écrit :

Pat a écrit :

Bon, j'ai mis la main à/dans la pâte. J'ai trouvé le bug.

(...)

Clairement, "ça" remarche ; merci !

--
Cordialement,

   Frédéric Moinard