Skip to content
Extraits de code Groupes Projets
Valider 00967c06 rédigé par JamesRezo's avatar JamesRezo :tada:
Parcourir les fichiers

-* Un bug étrange sur la balise #ENV qui renvoyait un entier sérialisé...

-* Deux petits filtres dans la lignée de |reset et |end : |push ajoute un élément à une balise qui est en fait un tableau, èquivalent à array_push et |find qui est un équivalent de in_array (tout ça parce que les fonctions natives de php ne fonctionnait plus)
-* Corrections sur le filtre et la balise #FOREACH, qui avaient eux aussi souffert de la nouvelle balise #ENV.
parent 8efeadf4
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -1699,6 +1699,14 @@ function filtre_end($array) {
return filtre_valeur_tableau($array,@count($array)-1);
}
function filtre_push($array, $val) {
if($array == '' OR !array_push($array, $val)) return '';
return $array;
}
function filtre_find($array, $val) {
return ($array != '' AND in_array($val, $array));
}
//
// fonction standard de calcul de la balise #PAGINATION
......@@ -2150,11 +2158,12 @@ function http_style_background($img, $att='')
// http://doc.spip.org/@filtre_foreach_dist
function filtre_foreach_dist($balise_deserializee, $modele = 'foreach') {
$texte = '';
foreach($balise_deserializee as $k => $v)
$texte .= recuperer_fond(
'modeles/'.$modele,
array('cle' => $k, 'valeur' => $v)
);
if(is_array($balise_deserializee))
foreach($balise_deserializee as $k => $v)
$texte .= recuperer_fond(
'modeles/'.$modele,
array_merge(array('cle' => $k), (is_array($v) ? $v : array('valeur' => $v)))
);
return $texte;
}
......
......@@ -997,7 +997,7 @@ function balise_ENV_dist($p, $src = NULL) {
if (!$_nom) {
// cas de #ENV sans argument : on retourne le serialize() du tableau
// une belle fonction [(#ENV|affiche_env)] serait pratique
$p->code = '($a = ('.$src.') ? serialize($a) : "")';
$p->code = '(is_array($a = ('.$src.')) ? serialize($a) : "")';
} else {
// admet deux arguments : nom de variable, valeur par defaut si vide
$p->code = 'is_array($a = ('.$src.')) ? $a['.$_nom.'] : ""';
......@@ -1383,14 +1383,14 @@ function balise_FOREACH_dist($p) {
$_modele = interprete_argument_balise(2,$p);
$_modele = str_replace("'", "", strtolower($_modele));
$__modele = 'foreach_'.strtolower($_tableau);
$_modele = (!$_modele AND ($f = find_in_path('modeles/'.$__modele.'.html'))) ? $__modele : ($_modele ? $_modele : 'foreach');
$_modele = (!$_modele AND find_in_path('modeles/'.$__modele.'.html')) ?
$__modele :
($_modele ? $_modele : 'foreach');
$p->param = @array_shift(@array_shift($p->param));
$p = $balise($p);
//retirer le serialize
$p->code = preg_replace(',serialize\((.*)\),', '\1', $p->code);
$filtre = chercher_filtre('foreach');
$p->code = $filtre . "(" . $p->code . ", '" . $_modele . "')";
$p->code = $filtre . "(unserialize(" . $p->code . "), '" . $_modele . "')";
}
//On a pas trouve la balise correspondant au tableau a traiter
else {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter