diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php index 851c77ee2cf26955314dfc0ccba7e4d5f12c6643..dfd271bbcfcbae98a0c419bd05899e8bc9ff1ddd 100644 --- a/ecrire/public/criteres.php +++ b/ecrire/public/criteres.php @@ -723,9 +723,13 @@ function calculer_critere_DEFAUT($idb, &$boucles, $crit) // inserer la condition (cf {lang?}) // traiter a part la date, elle est mise d'office par SPIP, if ($crit->cond) { - if (tester_param_date('articles', $col)) - $pred = '@$Pile["env"][\'' . $col ."']"; - else $pred = calculer_argument_precedent($idb, $col, $boucles); + $pred = calculer_argument_precedent($idb, $col, $boucles); + if ($col == "date" OR $col == "date_redac") { + if($pred == "\$Pile[0]['".$col."']") { + $pred = "(\$Pile[0]['{$col}_default']?'':$pred)"; + } + } + if ($op == '=' AND !$crit->not) $where = array("'?'", "(is_array($pred))", critere_IN_cas ($idb, $boucles, 'COND', $arg, $op, array($pred), $col), @@ -947,9 +951,12 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit) $val = 'id_parent'; // un critere conditionnel sur date est traite a part // car la date est mise d'office par SPIP, - if ($crit->cond AND tester_param_date('articles', $col)) - $val ='@$Pile["env"][\'' . $col ."']"; - else $val = calculer_argument_precedent($idb, $val, $boucles); + $val = calculer_argument_precedent($idb, $val, $boucles); + if ($crit->cond AND ($col == "date" OR $col == "date_redac")) { + if($val == "\$Pile[0]['".$col."']") { + $val = "(\$Pile[0]['{$col}_default']?'':$val)"; + } + } $val = array(kwote($val)); } } else { diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php index b65cad6670a842b1e30df678e58e0a131b202d4a..48c47945252f74c4b19f3986c39b56a6b32ff6aa 100644 --- a/ecrire/public/parametrer.php +++ b/ecrire/public/parametrer.php @@ -89,13 +89,15 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='') { // Rajouter d'office ces deux parametres // (mais vaudrait mieux que le compilateur sache le simuler // car ca interdit l'usage de criteres conditionnels dessus). - if (!isset($contexte['date'])) + if (!isset($contexte['date'])) { $contexte['date'] = date("Y-m-d H:i:s"); - else $contexte['date'] = normaliser_date($contexte['date']); + $contexte['date_default'] = true; + } else $contexte['date'] = normaliser_date($contexte['date']); - if (!isset($contexte['date_redac'])) + if (!isset($contexte['date_redac'])) { $contexte['date_redac'] = date("Y-m-d H:i:s"); - else $contexte['date_redac'] = normaliser_date($contexte['date_redac']); + $contexte['date_redac_default'] = true; + } else $contexte['date_redac'] = normaliser_date($contexte['date_redac']); // Passer le nom du cache pour produire sa destruction automatique $page = $fonc(array('cache' => $cache), array($contexte));