Browse Source

Verification des afficher_si côté PHP : il faut prendre l'ensemble des

saisies, pas seulement celle du fieldset courant.

On passe paramètre explicite lors de la récursion, vide au premier
appel.
pull/77/head
Maïeul 2 years ago
parent
commit
9e91c30a45
  1. 14
      inc/saisies_afficher_si_php.php

14
inc/saisies_afficher_si_php.php

@ -37,12 +37,14 @@ include_spip('inc/saisies_afficher_si_commun');
* @param array|null $env
* Tableau d'environnement transmis dans inclure/voir_saisies.html,
* NULL si on doit rechercher dans _request (pour saisies_verifier()).
*
* @param array $saisies_toutes_par_nom ensemble des saisies du formulaire courant, quelque soit le niveau de profondeur dans l'arborescence des saisies. A passer uniquement lorsque la fonction s'appelle elle-même, pour gérer la récursion
* @return array
* Tableau de descriptions de saisies
*/
function saisies_verifier_afficher_si($saisies, $env = null) {
function saisies_verifier_afficher_si($saisies, $env = null, $saisies_toutes_par_nom = array()) {
if (!$saisies_toutes_par_nom) {
$saisies_toutes_par_nom = saisies_lister_par_nom($saisies);
}
// compat historique
if (isset($saisies['options']['poster_afficher_si']) and !isset($saisies['options']['afficher_si_avec_post'])) {
$saisies['options']['afficher_si_avec_post'] = $saisies['options']['poster_afficher_si'];
@ -68,7 +70,7 @@ function saisies_verifier_afficher_si($saisies, $env = null) {
}
// On transforme en une condition PHP valide
$ok = saisies_evaluer_afficher_si($condition, $env, saisies_lister_par_nom($saisies));
$ok = saisies_evaluer_afficher_si($condition, $env, $saisies_toutes_par_nom);
if (!$ok) {
if ($remplissage_uniquement == false or is_null($env)) {
unset($saisies[$cle]);
@ -89,7 +91,9 @@ function saisies_verifier_afficher_si($saisies, $env = null) {
array_merge(
$saisies[$cle]['saisies'],
$a_merger),
$env);
$env,
$saisies_toutes_par_nom
);
}
}
return $saisies;

Loading…
Cancel
Save