Browse Source

test conditionnel @config:plugin:valeur@ : étendre à des sous config, et pas nécessairement à des plugins + mutualisation du code php/js + tests unitaires

svn/root/tags/v3.11.0 v3.11.0
maieul@maieul.net 4 years ago
parent
commit
6b76d7a15d
  1. 33
      inc/saisies_afficher_si.php
  2. 2
      paquet.xml

33
inc/saisies_afficher_si.php

@ -70,12 +70,7 @@ function saisies_generer_js_afficher_si($saisies, $id_form) {
$condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
}
}
// On gère le cas @config:plugin:meta@ suivi d'un test
preg_match_all('#@config:(.+):(.+)@#U', $condition, $matches);
foreach ($matches[1] as $plugin) {
$config = lire_config($plugin);
$condition = preg_replace('#@config:'.$plugin.':'.$matches[2][0].'@#U', '"'.$config[$matches[2][0]].'"', $condition);
}
$condition = saisies_transformer_condition_afficher_si_config($condition);
// On transforme en une condition valide
preg_match_all('#@(.+)@#U', $condition, $matches);
foreach ($matches[1] as $nom) {
@ -224,12 +219,7 @@ function saisies_verifier_afficher_si($saisies, $env = null) {
$condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
}
}
// On gère le cas @config:plugin:meta@ suivi d'un test
preg_match_all('#@config:(.+):(.+)@#U', $condition, $matches);
foreach ($matches[1] as $plugin) {
$config = lire_config($plugin);
$condition = preg_replace('#@config:'.$plugin.':'.$matches[2][0].'@#U', '"'.$config[$matches[2][0]].'"', $condition);
}
$condition = saisies_transformer_condition_afficher_si_config($condition);
// On transforme en une condition PHP valide
$ok = saisies_evaluer_afficher_si($condition, $env);
if (!$ok) {
@ -291,6 +281,25 @@ function saisies_verifier_securite_afficher_si($condition) {
return true;
}
/**
* Prend un test conditionnel
* cherche dedans les test @config:xxx@
* remplace par la valeur de la config
* @param string condition;
* @return string condition;
**/
function saisies_transformer_condition_afficher_si_config($condition) {
include_spip("inc/config");
preg_match_all('#@config:(.*)@#U', $condition, $matches, PREG_SET_ORDER);
foreach ($matches as $plugin) {
$arobase = $plugin[0];
$config_a_tester = str_replace(":", "/", $plugin[1]);
$config = lire_config($config_a_tester);
$condition = str_replace($arobase, '"'.$config.'"', $condition);
}
return $condition;
}
/**
* Prend un test conditionnel,
* le sépare en une série de sous-tests de type champ - operateur - valeur

2
paquet.xml

@ -1,7 +1,7 @@
<paquet
prefix="saisies"
categorie="outil"
version="3.10.1"
version="3.11.0"
etat="stable"
compatibilite="[3.0.0;3.2.*]"
logo="images/logo_saisie_48.png"

Loading…
Cancel
Save