function evaluer(&$substitutions = array())
 {
     if (DEBUG_EVAL) {
         Analyse::echo_debug("Evaluation boucle repeter {$this->nom}. RAW args: {$this->args}");
     }
     $args = $this->replace($substitutions, $this->args);
     $debut = lireTag($args, "debut");
     $fin = lireTag($args, "fin");
     $increment = lireTag($args, "increment");
     if ($debut == '') {
         $debut = 1;
     }
     if ($increment == '') {
         $increment = 1;
     }
     $val = '';
     if ($increment == 0) {
         die("L'increment de la boucle REPETER_" . $this->nom . " doit être different de 0");
     }
     for ($idx = $debut, $count = 1; $idx <= $fin; $idx += $increment, $count++) {
         $substitutions['#INDEX'] = $idx;
         $substitutions['#__COMPTEUR__'] = $count;
         $val .= $this->contenu->evaluer($substitutions);
     }
     return $val;
 }
 function evaluer(&$substitutions = array())
 {
     if (DEBUG_EVAL) {
         Analyse::echo_debug("Eval boucle simple {$this->nom}");
     }
     // Bug signalé par tetedelard
     // Réinitialiser l'état (la boucle peut-être placée dans une boucle qui implique des iterations,
     // et influe sur les paramètres de cette boucle, et donc sur ses résultats.
     $this->est_vide = true;
     $val = '';
     // Effectuer les substitutions dans les arguments de la boucle a exécuter
     // avec les valeurs de la présente boucle.
     $args = $this->replace($substitutions, $this->args);
     /*
            if (DEBUG_EVAL) {
                 Analyse::echo_debug("Eval boucle simple $this->nom, args=$this->args, subst_args=$args, Substitutions: \n",
                 $substitutions,
                 'variables:,
                 $this->variables);
             }
     */
     $type_boucle = ucfirst(strtolower(lireTag($args, 'type')));
     $boucle_subst = $this->evaluer_boucle_classique($type_boucle, $args);
     if (DEBUG_EVAL) {
         Analyse::echo_debug("Eval boucle simple {$this->nom}, subst: ", $boucle_subst === false ? 'FALSE' : $boucle_subst, " est vide: ", $this->est_vide === false ? 'FALSE' : "TRUE");
     }
     if ($boucle_subst !== false) {
         if (DEBUG_EVAL) {
             Analyse::echo_debug("Boucle simple {$this->nom} n'est plus vide.");
         }
         // Si boucle_subst es définie, alors la boucle n'est pas vide.
         $this->est_vide = false;
         // Evaluer la présente boucle.
         foreach ($boucle_subst->iterations as $iteration) {
             if (DEBUG_EVAL) {
                 Analyse::echo_debug("eval: type=" . $this->contenu->type() . "\nsubst: ", $iteration, "\ncontenu: ");
                 $this->contenu->imprimer();
             }
             if ($iteration->prefixe !== false) {
                 // La boucle a place quelque chose avant le texte.
                 // On l'ajoute nous aussi.
                 $val .= $iteration->prefixe;
                 if (DEBUG_EVAL) {
                     Analyse::echo_debug("eval: prefixe={$iteration->prefixe}");
                 }
             }
             if ($iteration->remplacement !== false) {
                 // La boucle a remplacé le texte qu'on lui a passé par un autre
                 // -> on retourne simplement ce texte, sans faire d'autres évaluations
                 $val .= $iteration->remplacement;
                 if (DEBUG_EVAL) {
                     Analyse::echo_debug("eval: remplacement={$iteration->remplacement}");
                 }
             } else {
                 if (DEBUG_EVAL) {
                     Analyse::echo_debug("eval: evaluation contenu");
                 }
                 $val .= $this->contenu->evaluer($iteration->varval);
             }
         }
         // Si la boucle n'est pas vide, mais n'a retourné aucune itération,
         // il faut tout de même évaluer son contenu.
         // FIXME: retiré, car on ajoute toujours une iteration par tour de boucle
         // cf. ajoutIteration()
         // if (count($boucle_subst->iterations) == 0) $val .= $this->contenu->evaluer();
     }
     if (DEBUG_EVAL) {
         Analyse::echo_debug("boucle={$type_boucle} vide:", $this->est_vide ? "Oui" : "Non");
     }
     return $val;
 }
Example #3
0
function boucleReprisePaiement($texte, $args)
{
    $paiement = lireTag($args, "paiement", "int");
    $refcommande = lireTag($args, "refcommande", "string");
    $module = new Modules();
    $commande = new Commande();
    $res = "";
    if (!empty($paiement) && $module->charger_id($paiement) && !empty($refcommande) && $commande->charger_ref($refcommande)) {
        if ($module->type == 1 && $module->actif == 1) {
            $res = str_replace("#URL", sprintf("index.php?action=reprise_paiement&amp;id_commande=%d&amp;id_paiement=%d", $commande->id, $module->id), $texte);
        }
    }
    return $res;
}
 function evaluer(&$substitutions = array())
 {
     if (DEBUG_EVAL) {
         Analyse::echo_debug("Evaluation boucle test {$this->nom}. RAW args: {$this->args}");
     }
     $args = $this->replace($substitutions, $this->args);
     $var = lireTag($args, "variable");
     if ($var == '') {
         $var = lireTag($args, "var");
     }
     $test = lireTag($args, "test");
     $val = lireTag($args, "valeur");
     if ($val == '') {
         $val = lireTag($args, "val");
     }
     if (DEBUG_EVAL) {
         Analyse::echo_debug("Boucle test: args='{$args}', var='{$var}', test='{$test}', val='{$val}'");
     }
     $vrai = false;
     switch (strtolower($test)) {
         case "vide":
             $vrai = trim($var) == '';
             break;
         case "nonvide":
             $vrai = trim($var) != '';
             break;
         case "egal":
             $vrai = $var == $val;
             break;
         case "different":
             $vrai = $var != $val;
             break;
         case "superieur":
             $vrai = $var > $val;
             break;
         case "superieurouegal":
             $vrai = $var >= $val;
             break;
         case "inferieur":
             $vrai = $var < $val;
             break;
         case "inferieurouegal":
             $vrai = $var <= $val;
             break;
         case "dansliste":
             $sep = lireTag($args, "separateur");
             if (empty($sep)) {
                 $sep = ",";
             }
             $vrai = in_array($var, explode($sep, $val));
             break;
         case "contient":
             $vrai = strstr($var, $val) !== false;
             break;
             // Contribution de asturyan
         // Contribution de asturyan
         case "modulo":
             $val = explode(",", $val);
             $vrai = $var % $val[0] == $val[1];
             break;
         default:
             die("L'argument 'test' de la boucle {$this->nom} est manquant ou inconnu: '{$test}'");
             break;
     }
     if ($vrai) {
         return $this->contenu[0]->evaluer($substitutions);
     } else {
         return $this->contenu[1]->evaluer($substitutions);
     }
 }