Browse Source

traiter le cas @plugin:xxx@ comme un type particulier de champ

svn/root/tags/v3.26.0
maieul@maieul.net 3 years ago
parent
commit
bf07379967
  1. 17
      inc/saisies_afficher_si_commun.php
  2. 16
      inc/saisies_afficher_si_php.php
  3. 8
      tests/saisies_afficher_si/saisies_evaluer_afficher_si.php

17
inc/saisies_afficher_si_commun.php

@ -28,3 +28,20 @@ function saisies_parser_condition_afficher_si($condition) {
preg_match_all($regexp, $condition, $tests, PREG_SET_ORDER);
return $tests;
}
/**
* Retourne le résultat de l'évaluation d'un plugin actif
* @param string $champ (sans les @@)
* @return bool '' ('' si jamais on ne teste pas un plugin)
**/
function saisies_afficher_si_evaluer_plugin($champ) {
if (preg_match_all('#plugin:(.*)#', $champ, $matches, PREG_SET_ORDER)) {
foreach ($matches as $plugin) {
$plugin_a_tester = $plugin[1];
$actif = test_plugin_actif($plugin_a_tester);
}
} else {
$actif = '';
}
return $actif;
}

16
inc/saisies_afficher_si_php.php

@ -55,15 +55,6 @@ function saisies_verifier_afficher_si($saisies, $env = null) {
$remplissage_uniquement = false;
}
// On gère le cas @plugin:nom_plugin@
preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
foreach ($matches[1] as $plug) {
if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
$condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
} else {
$condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
}
}
// On transforme en une condition PHP valide
$ok = saisies_evaluer_afficher_si($condition, $env);
if (!$ok) {
@ -113,12 +104,15 @@ function saisies_set_request_null_recursivement($saisie) {
* @return la valeur du champ ou de la config
**/
function saisies_afficher_si_get_valeur_champ($champ, $env) {
if (preg_match_all("#config:(.*)#", $champ, $matches, PREG_SET_ORDER)) {
$plugin = saisies_afficher_si_evaluer_plugin($champ);
if ($plugin !== '') {
$champ = $plugin;
} elseif (preg_match_all("#config:(.*)#", $champ, $matches, PREG_SET_ORDER)) {
foreach ($matches as $config) {
$config_a_tester = str_replace(":", "/", $config[1]);
$champ = lire_config($config_a_tester);
}
} elseif (is_null($env)) {
} elseif (is_null($env)) {
$champ = _request($champ);
} else {
$champ = $env["valeurs"][$champ];

8
tests/saisies_afficher_si/saisies_evaluer_afficher_si.php

@ -189,6 +189,14 @@
0 => true,
1 => '@config:tests_saisies_config:sous:c@==\'c\' || @config:tests_saisies_config:sous:b@==\'c\'',
),
'plugin_actif' => array(
0 => true,
1 => '@plugin:saisies@'
),
'plugin_inactif' => array(
0 => false,
1 => '@plugin:tartempion_de_test@' // en espérant que personne ne nomme un plugin tartempion_de_test
),
);
return $essais;
}

Loading…
Cancel
Save