Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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;
}