[SPIP] ~v3.0.17-->v3.0.19
[lhc/web/www.git] / www / ecrire / public / sandbox.php
index 7916929..3f615b0 100644 (file)
@@ -48,7 +48,20 @@ function sandbox_composer_filtre($fonc, $code, $arglist, &$p){
        // le filtre est defini sous forme de fonction ou de methode
        // par ex. dans inc_texte, inc_filtres ou mes_fonctions
        elseif ($f = chercher_filtre($fonc)) {
-               $code = "$f($code$arglist)";
+               // cas particulier : le filtre |set doit acceder a la $Pile
+               // proto: filtre_set(&$Pile, $val, $args...)
+               if (strpbrk($f, ':')) { // Class::method
+                       $refl = new ReflectionMethod($f);
+               } else {
+                       $refl = new ReflectionFunction($f);
+               }
+               $refs = $refl->getParameters();
+               if (isset($refs[0]) AND $refs[0]->name == 'Pile') {
+                       $code = "$f(\$Pile,$code$arglist)";
+               }
+               else {
+                       $code = "$f($code$arglist)";
+               }
        }
        // le filtre n'existe pas,
        // on le notifie