function boucle_exec($type_boucle, $args, $texte, $nom_boucle = "")
 {
     global $page;
     $variables = "";
     $res = "";
     $exec_boucle = 1;
     //$param = array(&$type_boucle, &$args, &$texte, &$nom_boucle, &$exec_boucle);
     //ActionsModules::instance()->appel_module( "avantboucle", $param);
     if ($exec_boucle) {
         switch ($type_boucle) {
             case 'RUBRIQUE':
                 $res .= boucleRubrique($texte, $args);
                 break;
             case 'DOSSIER':
                 $res .= boucleDossier($texte, $args);
                 break;
             case 'CONTENU':
                 $res .= boucleContenu($texte, $args);
                 break;
             case 'CONTENUASSOC':
                 $res .= boucleContenuassoc($texte, $args);
                 break;
             case 'PRODUIT':
                 $res .= boucleProduit($texte, $args);
                 break;
             case 'PAGE':
                 $res .= bouclePage($texte, $args);
                 break;
             case 'PANIER':
                 $res .= bouclePanier($texte, $args);
                 break;
             case 'QUANTITE':
                 $res .= boucleQuantite($texte, $args);
                 break;
             case 'CHEMIN':
                 $res .= boucleChemin($texte, $args);
                 break;
             case 'CHEMINDOS':
                 $res .= boucleChemindos($texte, $args);
                 break;
             case 'PAIEMENT':
                 $res .= bouclePaiement($texte, $args);
                 break;
             case 'ADRESSE':
                 $res .= boucleAdresse($texte, $args);
                 break;
             case 'VENTEADR':
                 $res .= boucleVenteadr($texte, $args);
                 break;
             case 'COMMANDE':
                 $res .= boucleCommande($texte, $args);
                 break;
             case 'VENTEPROD':
                 $res .= boucleVenteprod($texte, $args);
                 break;
             case 'IMAGE':
                 $res .= boucleImage($texte, $args);
                 break;
             case 'DOCUMENT':
                 $res .= boucleDocument($texte, $args);
                 break;
             case 'ACCESSOIRE':
                 $res .= boucleAccessoire($texte, $args);
                 break;
             case 'TRANSPORT':
                 $res .= boucleTransport($texte, $args);
                 break;
             case 'PAYS':
                 $res .= bouclePays($texte, $args);
                 break;
             case 'CARACTERISTIQUE':
                 $res .= boucleCaracteristique($texte, $args);
                 break;
             case 'CARACDISP':
                 $res .= boucleCaracdisp($texte, $args);
                 break;
             case 'CARACVAL':
                 $res .= boucleCaracval($texte, $args);
                 break;
             case 'DEVISE':
                 $res .= boucleDevise($texte, $args);
                 break;
             case 'CLIENT':
                 $res .= boucleClient($texte, $args);
                 break;
             case 'DECLINAISON':
                 $res .= boucleDeclinaison($texte, $args);
                 break;
             case 'DECLIDISP':
                 $res .= boucleDeclidisp($texte, $args);
                 break;
             case 'DECVAL':
                 $res .= boucleDecval($texte, $args);
                 break;
             case 'RSS':
                 $res .= boucleRSS($texte, $args);
                 break;
             case 'STOCK':
                 $res .= boucleStock($texte, $args);
                 break;
             case 'PAGERUBRIQUE':
                 $res .= bouclePagerubrique($texte, $args);
                 break;
             case 'RAISON':
                 $res .= boucleRaison($texte, $args);
                 break;
             case 'TVA':
                 $res .= boucleTva($texte, $args);
                 break;
             case 'LANGUE':
                 $res .= boucleLangue($texte, $args);
                 break;
             case 'REPRISEPAIEMENT':
                 $res .= boucleReprisePaiement($texte, $args);
                 break;
             default:
                 $res .= $this->moduleBoucle($type_boucle, $texte, $args);
                 break;
         }
     } else {
         $res = $texte;
     }
     //$param = array(&$type_boucle, &$args, &$res, &$nom_boucle);
     //ActionsModules::instance()->appel_module( "apresboucle", $param);
     return $res;
 }
Пример #2
0
function bouclePage($texte, $args)
{
    global $page, $id_rubrique, $id_dossier;
    // récupération des arguments
    $num = lireTag($args, "num", "int");
    $courante = lireTag($args, "courante", "int");
    $pagecourante = lireTag($args, "pagecourante", "int");
    $typeaff = lireTag($args, "typeaff", "int");
    $max = lireTag($args, "max", "int");
    $affmin = lireTag($args, "affmin", "int");
    $avance = lireTag($args, "avance", "string");
    $type_page = lireTag($args, "type_page", "int");
    /** PARAMÈTRES DÉPRÉCIÉS, A NE PLUS UTILISER */
    $deb = lireTag($args, "deb", "int");
    $totbloc = lireTag($args, "totbloc", "int");
    /** FIN PARAMÈTRES DÉPRÉCIÉS */
    $i = "";
    if ($page <= 0) {
        $page = 1;
    }
    $bpage = $page;
    $res = "";
    $cnx = new Cnx();
    if (!$type_page) {
        $query = boucleProduit($texte, str_replace("num", "null", $args), 1);
    } else {
        $query = boucleContenu($texte, str_replace("num", "null", $args), 1);
    }
    if ($query != "") {
        $pos = strpos($query, "limit");
        if ($pos > 0) {
            $query = substr($query, 0, $pos);
        }
        $resul = $cnx->query($query);
        $nbres = $cnx->num_rows($resul);
    } else {
        $nbres = 0;
    }
    $page = $bpage;
    $nbpage = $num ? ceil($nbres / $num) : 0;
    if ($page + 1 > $nbpage) {
        $pagesuiv = $page;
    } else {
        $pagesuiv = $page + 1;
    }
    if ($page - 1 <= 0) {
        $pageprec = 1;
    } else {
        $pageprec = $page - 1;
    }
    if ($nbpage < $affmin) {
        return;
    }
    if ($nbpage == 1) {
        return;
    }
    if ($typeaff == 1) {
        if (!$max) {
            $max = $nbpage + 1;
        }
        if ($page && $max && $page > $max) {
            $i = ceil($page / $max) * $max - $max + 1;
        }
        if ($i == 0) {
            $i = 1;
        }
        $fin = $i + $max;
        for (; $i < $nbpage + 1 && $i < $fin; $i++) {
            $temp = str_replace("#PAGE_NUM", "{$i}", $texte);
            $temp = str_replace("#PAGE_SUIV", "{$pagesuiv}", $temp);
            $temp = str_replace("#PAGE_PREC", "{$pageprec}", $temp);
            $temp = str_replace("#RUBRIQUE", "{$id_rubrique}", $temp);
            $temp = str_replace("#DOSSIER", "{$id_dossier}", $temp);
            if ($pagecourante && $pagecourante == $i) {
                if ($courante == "1" && $page == $i) {
                    $res .= $temp;
                } else {
                    if ($courante == "0" && $page != $i) {
                        $res .= $temp;
                    } else {
                        if ($courante == "") {
                            $res .= $temp;
                        }
                    }
                }
            } else {
                if (!$pagecourante) {
                    $res .= $temp;
                }
            }
        }
    } else {
        if ($typeaff == "0" && ($avance == "precedente" && $pageprec != $page)) {
            $temp = str_replace("#PAGE_NUM", "{$page}", $texte);
            $temp = str_replace("#PAGE_PREC", "{$pageprec}", $temp);
            $temp = str_replace("#RUBRIQUE", "{$id_rubrique}", $temp);
            $temp = str_replace("#DOSSIER", "{$id_dossier}", $temp);
            $res .= $temp;
        } else {
            if ($typeaff == "0" && ($avance == "suivante" && $pagesuiv != $page)) {
                $temp = str_replace("#PAGE_NUM", "{$page}", $texte);
                $temp = str_replace("#PAGE_SUIV", "{$pagesuiv}", $temp);
                $temp = str_replace("#RUBRIQUE", "{$id_rubrique}", $temp);
                $temp = str_replace("#DOSSIER", "{$id_dossier}", $temp);
                $res .= $temp;
            } else {
                if ($typeaff == "0" && $avance == "") {
                    $temp = str_replace("#PAGE_NUM", "{$page}", $texte);
                    $temp = str_replace("#PAGE_SUIV", "{$pagesuiv}", $temp);
                    $temp = str_replace("#PAGE_PREC", "{$pageprec}", $temp);
                    $temp = str_replace("#RUBRIQUE", "{$id_rubrique}", $temp);
                    $temp = str_replace("#DOSSIER", "{$id_dossier}", $temp);
                    $res .= $temp;
                } else {
                    if ($typeaff == "2") {
                        /** DEPREACTED le typeaff 2 n'est plus utilisé, concervé pour rétrocompatibilité */
                        if (!$deb) {
                            $deb = 0;
                        }
                        if ($page) {
                            $_SESSION['navig']->page = $page;
                        }
                        if (!$page || $page == 1) {
                            $page = 0;
                        }
                        if (!$totbloc) {
                            $totbloc = 1;
                        }
                        if ($page) {
                            $deb = ($page - 1) * $totbloc * $num + $deb;
                        }
                        $fin = $deb + $num;
                        $query = str_replace("*", "count(*) as max", $query);
                        $resul = $cnx->query($query);
                        $max = $cnx->get_result($resul, 0, "max");
                        if ($fin > $max) {
                            $fin = $max;
                        }
                        $temp = str_replace("#DEBUT", $deb, $texte);
                        $temp = str_replace("#FIN", $fin, $temp);
                        $temp = str_replace("#MAX", $max, $temp);
                        $res .= $temp;
                        /** END DEPRECATED */
                    }
                }
            }
        }
    }
    return $res;
}