From d760cd34db2fe5b04115cf7a9e20ec89f53091c5 Mon Sep 17 00:00:00 2001
From: Eric <eric@smellup.net>
Date: Sat, 19 Nov 2016 14:50:59 +0000
Subject: [PATCH] =?UTF-8?q?On=20ajoute=20une=20option=20=C3=A0=20la=20fonc?=
 =?UTF-8?q?tion=20table=5Fvaleur()=20pour=20permettre=20de=20renvoyer=20la?=
 =?UTF-8?q?=20valeur=20null=20d'un=20index.=20En=20effet,=20en=20testant?=
 =?UTF-8?q?=20avec=20isset()=20l'existence=20d'un=20index=20de=20tableau,?=
 =?UTF-8?q?=20table=5Fvaleur()=20=C3=A9crase=20un=20index=20de=20valeur=20?=
 =?UTF-8?q?null=20par=20la=20valeur=20par=20d=C3=A9faut=20(comportement=20?=
 =?UTF-8?q?de=20isset=20=3D=20index=20existe=20et=20n'est=20pas=20null).?=
 =?UTF-8?q?=20N=C3=A9anmoins,=20il=20est=20aussi=20utile=20parfois=20de=20?=
 =?UTF-8?q?renvoyer=20une=20valeur=20null=20pour=20un=20index=20existant?=
 =?UTF-8?q?=20(=C3=A0=20mon=20avis=20ce=20devrait=20=C3=AAtre=20le=20compo?=
 =?UTF-8?q?rtement=20de=20base).=20Dans=20ce=20cas=20on=20utilise=20array?=
 =?UTF-8?q?=5Fkey=5Fexists().=20Le=20comportement=20actuel=20n'est=20pas?=
 =?UTF-8?q?=20modifi=C3=A9=20car=20l'option=20est=20=C3=A0=20false=20par?=
 =?UTF-8?q?=20d=C3=A9faut.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/inc/filtres.php | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index fb8897aa33..537ca89b10 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -4213,10 +4213,15 @@ function url_absolue_css($css) {
  *     pour obtenir la valeur de `$tableau['sous']['element']['ici']`
  * @param mixed $defaut
  *     Valeur par defaut retournée si la clé demandée n'existe pas
+ * @param bool  $conserver_null
+ *     Permet de forcer la fonction à renvoyer la valeur null d'un index
+ *     et non pas $defaut comme cela est fait naturellement par la fonction
+ *     isset. On utilise alors array_key_exists() à la place de isset().
+ * 
  * @return mixed
  *     Valeur trouvée ou valeur par défaut.
  **/
-function table_valeur($table, $cle, $defaut = '') {
+function table_valeur($table, $cle, $defaut = '', $conserver_null = false) {
 	foreach (explode('/', $cle) as $k) {
 
 		$table = is_string($table) ? @unserialize($table) : $table;
@@ -4224,7 +4229,11 @@ function table_valeur($table, $cle, $defaut = '') {
 		if (is_object($table)) {
 			$table = (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
 		} elseif (is_array($table)) {
-			$table = isset($table[$k]) ? $table[$k] : $defaut;
+			if ($conserver_null) {
+				$table = array_key_exists($k, $table) ? $table[$k] : $defaut;
+			} else {
+				$table = isset($table[$k]) ? $table[$k] : $defaut;
+			}
 		} else {
 			$table = $defaut;
 		}
-- 
GitLab