Valider e8507c15 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

On branche la balise #ENV sur la fonction d'extraction table_valeur().

De la sorte, en plus de l'utilisation habituelle de #ENV, il est possible de simplifier du code de plus en plus fréquent : 
[(#ENV{x}|table_valeur{y})] peut maintenant s'écrire plus simplement
[(#ENV{x/y})], ce qui récupère l'équivalent de $env['x']['y']

De même [(#ENV{x}|table_valeur{y/z})] peut s'écrire
[(#ENV{x/y/z})], qui récupère l'équivalent de $env['x']['y']['z'].

Enfin, et comme #GET s'appuie sur #ENV, cela est aussi valable pour cette balise : #GET{x/y} est équivalent à #GET{x}|table_valeur{y}
parent 1788ef47
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+4 −3
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -2002,13 +2002,14 @@ function table_valeur($table, $cle, $defaut='') {
	foreach (explode('/', $cle) as $k) {
		$table = is_string($table) ? unserialize($table) : $table;

		if (is_object($table))
		if (is_object($table)) {
			$table =  (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
		else if (is_array($table))
		} elseif (is_array($table)) {
			$table = isset($table[$k]) ? $table[$k] : $defaut;
		else
		} else {
			$table = $defaut;
		}
	}
	return $table;
}

+10 −8
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -620,6 +620,12 @@ function balise_CHEMIN_IMAGE_dist($p) {
 * La syntaxe #ENV{toto, valeur par defaut}
 * renverra 'valeur par defaut' si $toto est vide
 *
 * La recherche de la cle s'appuyant sur la fonction table_valeur
 * il est possible de demander un sous element d'un tableau
 * #ENV{toto/sous/element, valeur par defaut} retournera l'equivalent de
 * #ENV{toto}|table_valeur{sous/element} c'est a dire en quelque sorte
 * $env['toto']['sous']['element'] s'il existe, sinon la valeur par defaut.
 *
 * Si le tableau est vide on renvoie '' (utile pour #SESSION)
 *
 * Enfin, la balise utilisee seule #ENV retourne le tableau complet
@@ -661,17 +667,13 @@ function balise_ENV_dist($p, $src = NULL) {
			$p->code = '@serialize($Pile[0])';
		}
	} else {
		// admet deux arguments : nom de variable, valeur par defaut si vide
		if ($src) {
			$p->code = 'is_array($a = ('.$src.')) ? $a[(string)'.$_nom.'] : ""';
		} else {
			$p->code = '@$Pile[0][(string)' . $_nom . ']';
		if (!$src) {
			$src = '@$Pile[0]';
		}

		if ($_sinon) {
			$p->code = 'sinon(' . $p->code . ",$_sinon)";
			$p->code = "table_valeur($src, (string)$_nom, $_sinon)";
		} else {
			$p->code = '('.$p->code.')';
			$p->code = "table_valeur($src, (string)$_nom)";
		}
	}
	#$p->interdire_scripts = true;