function compose_filtres(&$p, $code) { $image_miette = false; foreach($p->param as $filtre) { $fonc = array_shift($filtre); if (!$fonc) continue; // normalement qu'au premier tour. $is_filtre_image = ((substr($fonc,0,6)=='image_') AND $fonc!='image_graver'); if ($image_miette AND !$is_filtre_image){ // il faut graver maintenant car apres le filtre en cours // on est pas sur d'avoir encore le nom du fichier dans le pipe $code = "filtrer('image_graver', $code)"; $image_miette = false; } // recuperer les arguments du filtre, // a separer par "," ou ":" dans le cas du filtre "?{a,b}" if ($fonc !== '?') { $sep = ','; } else {$sep = ':'; // |?{a,b} *doit* avoir exactement 2 arguments ; on les force if (count($filtre) != 2) $filtre = array(isset($filtre[0])?$filtre[0]:"", isset($filtre[1])?$filtre[1]:""); } $arglist = compose_filtres_args($p, $filtre, $sep); $logique = filtre_logique($fonc, $code, substr($arglist,1)); if ($logique) $code = $logique; else { if (isset($GLOBALS['spip_matrice'][$fonc])) { $code = "filtrer('$fonc',$code$arglist)"; if ($is_filtre_image) $image_miette = true; } // 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)"; } // le filtre n'existe pas, // on le notifie else erreur_squelette(array('zbug_erreur_filtre', array('filtre'=> texte_script($fonc))), $p); } } // ramasser les images intermediaires inutiles et graver l'image finale if ($image_miette) $code = "filtrer('image_graver',$code)"; return $code; }
function compose_filtres(&$p, $code) { $image_miette = false; foreach ($p->param as $filtre) { $fonc = array_shift($filtre); if (!$fonc) { continue; } // normalement qu'au premier tour. $is_filtre_image = (substr($fonc, 0, 6) == 'image_' and $fonc != 'image_graver'); if ($image_miette and !$is_filtre_image) { // il faut graver maintenant car apres le filtre en cours // on est pas sur d'avoir encore le nom du fichier dans le pipe $code = "filtrer('image_graver', {$code})"; $image_miette = false; } // recuperer les arguments du filtre, // a separer par "," ou ":" dans le cas du filtre "?{a,b}" if ($fonc !== '?') { $sep = ','; } else { $sep = ':'; // |?{a,b} *doit* avoir exactement 2 arguments ; on les force if (count($filtre) != 2) { $filtre = array(isset($filtre[0]) ? $filtre[0] : "", isset($filtre[1]) ? $filtre[1] : ""); } } $arglist = compose_filtres_args($p, $filtre, $sep); $logique = filtre_logique($fonc, $code, substr($arglist, 1)); if ($logique) { $code = $logique; } else { $code = sandbox_composer_filtre($fonc, $code, $arglist, $p); if ($is_filtre_image) { $image_miette = true; } } } // ramasser les images intermediaires inutiles et graver l'image finale if ($image_miette) { $code = "filtrer('image_graver',{$code})"; } return $code; }