Changeset 114277 in spip-zone


Ignore:
Timestamp:
Mar 2, 2019, 8:37:50 PM (6 months ago)
Author:
maieul@…
Message:

évaluer correctement les @config:xx@ et avoir des tests unitaires qui testent vraiment ce qu'ils annoncent tester

Location:
_plugins_/saisies/trunk
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/inc/saisies_afficher_si.php

    r114276 r114277  
    223223                                }
    224224                        }
    225                         $condition = saisies_transformer_condition_afficher_si_config($condition);
    226225                        // On transforme en une condition PHP valide
    227226                        $ok = saisies_evaluer_afficher_si($condition, $env);
     
    264263}
    265264
     265/**
     266 * Récupère la valeur d'un champ à tester avec afficher_si
     267 * Si le champ est de type @config:xx@, alors prend la valeur de la config
     268 * sinon en _request() ou en $env["valeurs"]
     269 * @param string $champ: le champ
     270 * @param null|array $env
     271 * @return  la valeur du champ ou de la config
     272 **/
     273function saisies_afficher_si_get_valeur_champ($champ, $env) {
     274        if (preg_match_all("#config:(.*)#", $champ, $matches, PREG_SET_ORDER)) {
     275                foreach ($matches as $plugin) {
     276                        $arobase = $plugin[0];
     277                        $config_a_tester = str_replace(":", "/", $plugin[1]);
     278                        $champ = lire_config($config_a_tester);
     279                }
     280        } elseif (is_null($env)) {
     281                $champ = _request($champ);
     282        } else {
     283                $champ = $env["valeurs"][$champ];
     284        }
     285        return $champ;
     286}
    266287
    267288/**
     
    309330                foreach ($tests as $test) {
    310331                        $expression = $test[0];
    311                         $champ = $test['champ'];
    312                         if (is_null($env)) {
    313                                 $champ = _request($champ);
    314                         } else {
    315                                 $champ = $env["valeurs"][$champ];
    316                         }
     332                        $champ = saisies_afficher_si_get_valeur_champ($test['champ'], $env);
    317333                        $operateur = isset($test['operateur']) ? $test['operateur'] : null;
    318334                        $valeur = isset($test['valeur']) ? $test['valeur'] : null;
     
    325341        } else {
    326342                spip_log("Afficher_si incorrect : $condition", "saisies"._LOG_CRITIQUE);
     343
    327344                $condition = true;
    328345        }
  • _plugins_/saisies/trunk/tests/saisies_afficher_si/saisies_evaluer_afficher_si_config.php

    r114276 r114277  
    88 */
    99
    10         $test = 'saisies_transformer_condition_afficher_si_config';
     10        $test = 'saisies_evaluer_afficher_si_config';
    1111        $remonte = "../";
    1212        while (!is_dir($remonte."ecrire"))
     
    1616
    1717
    18         // On va plutot test le resultat des évaluations
    1918        function condition_eval($condition) {
    20                 $condition = saisies_transformer_condition_afficher_si_config($condition);
    2119                return saisies_evaluer_afficher_si($condition);
    2220        };
Note: See TracChangeset for help on using the changeset viewer.