Changeset 117734 in spip-zone


Ignore:
Timestamp:
Sep 6, 2019, 4:36:50 PM (2 months ago)
Author:
maieul@…
Message:

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

Location:
_plugins_/saisies/trunk
Files:
3 edited

Legend:

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

    r117730 r117734  
    2929        return $tests;
    3030}
     31
     32/**
     33 * Retourne le résultat de l'évaluation d'un plugin actif
     34 * @param string $champ (sans les @@)
     35 * @return bool '' ('' si jamais on ne teste pas un plugin)
     36**/
     37function saisies_afficher_si_evaluer_plugin($champ) {
     38        if (preg_match_all('#plugin:(.*)#', $champ, $matches, PREG_SET_ORDER)) {
     39                foreach ($matches as $plugin) {
     40                        $plugin_a_tester = $plugin[1];
     41                        $actif = test_plugin_actif($plugin_a_tester);
     42                }
     43        }       else {
     44                $actif = '';
     45        }
     46        return $actif;
     47}
  • _plugins_/saisies/trunk/inc/saisies_afficher_si_php.php

    r117733 r117734  
    5656                        }
    5757
    58                         // On gère le cas @plugin:nom_plugin@
    59                         preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
    60                         foreach ($matches[1] as $plug) {
    61                                 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
    62                                         $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
    63                                 } else {
    64                                         $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
    65                                 }
    66                         }
    6758                        // On transforme en une condition PHP valide
    6859                        $ok = saisies_evaluer_afficher_si($condition, $env);
     
    114105 **/
    115106function saisies_afficher_si_get_valeur_champ($champ, $env) {
    116         if (preg_match_all("#config:(.*)#", $champ, $matches, PREG_SET_ORDER)) {
     107        $plugin = saisies_afficher_si_evaluer_plugin($champ);
     108        if ($plugin !== '') {
     109                $champ = $plugin;
     110        } elseif (preg_match_all("#config:(.*)#", $champ, $matches, PREG_SET_ORDER)) {
    117111                foreach ($matches as $config) {
    118112                        $config_a_tester = str_replace(":", "/", $config[1]);
    119113                        $champ = lire_config($config_a_tester);
    120114                }
    121         } elseif (is_null($env)) {
     115        }  elseif (is_null($env)) {
    122116                $champ = _request($champ);
    123117        } else {
  • _plugins_/saisies/trunk/tests/saisies_afficher_si/saisies_evaluer_afficher_si.php

    r117731 r117734  
    190190                                1 => '@config:tests_saisies_config:sous:c@==\'c\' || @config:tests_saisies_config:sous:b@==\'c\'',
    191191                        ),
     192                        'plugin_actif' => array(
     193                                0 =>  true,
     194                                1 => '@plugin:saisies@'
     195                        ),
     196                        'plugin_inactif' => array(
     197                                0 => false,
     198                                1 => '@plugin:tartempion_de_test@' // en espérant que personne ne nomme un plugin tartempion_de_test
     199                        ),
    192200                );
    193201                return $essais;
Note: See TracChangeset for help on using the changeset viewer.