Skip to content
Extraits de code Groupes Projets
Valider 91875a32 rédigé par esj's avatar esj
Parcourir les fichiers

Référence aux champs après </BOUCLE> (Jean-Luc)

parent 2745643d
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -124,9 +124,10 @@ function calculer_boucle($id_boucle, &$boucles) ...@@ -124,9 +124,10 @@ function calculer_boucle($id_boucle, &$boucles)
(($flag_parties) ? (($flag_parties) ?
calculer_parties($boucle->partie, calculer_parties($boucle->partie,
$boucle->mode_partie, $boucle->mode_partie,
$boucle->total_parties) : $boucle->total_parties,
((!$boucle->numrows) ? '' : ' $id_boucle) :
$PileNum[$SP] = @spip_num_rows($result);')) . ((!$boucle->numrows) ? '' : "
\$PileNum['$id_boucle'] = @spip_num_rows(\$result);")) .
((!$flag_cpt) ? '' : "\n\t\$compteur_boucle = 0;") . ((!$flag_cpt) ? '' : "\n\t\$compteur_boucle = 0;") .
((!$corps) ? "" : ((!$corps) ? "" :
( (
...@@ -152,7 +153,7 @@ function calculer_boucle($id_boucle, &$boucles) ...@@ -152,7 +153,7 @@ function calculer_boucle($id_boucle, &$boucles)
// une grosse fonction pour un petit cas // une grosse fonction pour un petit cas
function calculer_parties($partie, $mode_partie, $total_parties) function calculer_parties($partie, $mode_partie, $total_parties, $id_boucle)
{ {
return (' return ('
$fin_boucle = @spip_num_rows($result);' . $fin_boucle = @spip_num_rows($result);' .
...@@ -195,7 +196,7 @@ function calculer_parties($partie, $mode_partie, $total_parties) ...@@ -195,7 +196,7 @@ function calculer_parties($partie, $mode_partie, $total_parties)
# ce qui doit re'duire la me'moire ne'cessaire au processus # ce qui doit re'duire la me'moire ne'cessaire au processus
# En de'coule une combinatoire laborieuse mais sans difficulte' # En de'coule une combinatoire laborieuse mais sans difficulte'
function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $id_mere) function calculer_liste($tableau, $prefix, $id_boucle, $niv, &$boucles, $id_mere)
{ {
if ((!$tableau)) return array("''",''); if ((!$tableau)) return array("''",'');
$texte = ''; $texte = '';
...@@ -226,11 +227,11 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $i ...@@ -226,11 +227,11 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $i
if ($objet->type == 'boucle') { if ($objet->type == 'boucle') {
$nom = $objet->id_boucle; $nom = $objet->id_boucle;
list($bc,$bm) = calculer_liste($objet->cond_avant, $prefix, list($bc,$bm) = calculer_liste($objet->cond_avant, $prefix,
$objet->id_boucle, $niv+2,$rec, $boucles, $id_mere); $id_boucle, $niv+2, $boucles, $nom);
list($ac,$am) = calculer_liste($objet->cond_apres, $prefix, list($ac,$am) = calculer_liste($objet->cond_apres, $prefix,
$objet->id_boucle, $niv+2,$rec, $boucles, $id_mere); $id_boucle, $niv+2, $boucles, $nom);
list($oc,$om) = calculer_liste($objet->cond_altern, $prefix, list($oc,$om) = calculer_liste($objet->cond_altern, $prefix,
$objet->id_boucle, $niv+1,$rec, $boucles, $id_mere); $id_boucle, $niv+1,$boucles, $nom);
$c = $prefix . $c = $prefix .
...@@ -238,14 +239,14 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $i ...@@ -238,14 +239,14 @@ function calculer_liste($tableau, $prefix, $id_boucle, $niv, $rec, &$boucles, $i
'($Cache, $PileRow, $doublons, $PileNum, $SP)'; '($Cache, $PileRow, $doublons, $PileNum, $SP)';
$m = ""; $m = "";
} else { } else {
list($c,$m) = list($c,$m) =
calculer_champ($objet->fonctions, calculer_champ($objet->fonctions,
$objet->nom_champ, $objet->nom_champ,
$id_boucle, $id_boucle,
$boucles, $boucles,
$id_mere); $id_mere);
list($bc,$bm) = calculer_liste($objet->cond_avant, $prefix, $id_boucle, $niv+2,false, $boucles, $id_mere); list($bc,$bm) = calculer_liste($objet->cond_avant, $prefix, $id_boucle, $niv+2,$boucles, $id_mere);
list($ac,$am) = calculer_liste($objet->cond_apres, $prefix, $id_boucle, $niv+2,false, $boucles, $id_mere); list($ac,$am) = calculer_liste($objet->cond_apres, $prefix, $id_boucle, $niv+2,$boucles, $id_mere);
$oc = "''"; $oc = "''";
$om = ""; $om = "";
} }
...@@ -343,7 +344,6 @@ function calculer_squelette($squelette, $nom, $gram) { ...@@ -343,7 +344,6 @@ function calculer_squelette($squelette, $nom, $gram) {
$nom, $nom,
$boucle->param, $boucle->param,
1, 1,
true,
$boucles, $boucles,
$id); $id);
} }
...@@ -352,15 +352,12 @@ function calculer_squelette($squelette, $nom, $gram) { ...@@ -352,15 +352,12 @@ function calculer_squelette($squelette, $nom, $gram) {
{ {
if ($boucle->type_requete != 'boucle') if ($boucle->type_requete != 'boucle')
{ {
# spip_log("calcul_liste $id de type" . $boucle->type_requete);
calculer_params($boucle->type_requete, $boucle->param, $id, $boucles); calculer_params($boucle->type_requete, $boucle->param, $id, $boucles);
$boucles[$id]->return = $boucles[$id]->return =
calculer_liste($boucle->milieu, calculer_liste($boucle->milieu,
$nom, $nom,
$id, $id,
1, 1,
false,
$boucles, $boucles,
$id); $id);
} }
...@@ -370,7 +367,7 @@ function calculer_squelette($squelette, $nom, $gram) { ...@@ -370,7 +367,7 @@ function calculer_squelette($squelette, $nom, $gram) {
// idem pour la racine // idem pour la racine
list($return,$corps) = list($return,$corps) =
calculer_liste($racine, $nom, '',0, false, $boucles, ''); calculer_liste($racine, $nom, '',0, $boucles, '');
// Corps de toutes les fonctions PHP, // Corps de toutes les fonctions PHP,
// en particulier les requetes SQL et TOTAL_BOUCLE // en particulier les requetes SQL et TOTAL_BOUCLE
......
...@@ -123,21 +123,13 @@ function calculer_champ_divers($fonctions, $nom_champ, $id_boucle, &$boucles, $i ...@@ -123,21 +123,13 @@ function calculer_champ_divers($fonctions, $nom_champ, $id_boucle, &$boucles, $i
break; break;
case 'TOTAL_BOUCLE': case 'TOTAL_BOUCLE':
$n = 0; if (!$id_mere)
$b = $id_boucle;
// si $id_boucle est vide, c'est la racine
// il faudrait dire a` l'auteur du squelette que ca n'a pas de sens
while ($b != $id_mere)
{ {
$n++; include_local("inc-debug-squel.php3");
$b = $boucles[$b]->id_parent; erreur_squelette(_L("Champ #TOTAL_BOUCLE hors boucle"), '', $id_boucle);
// c~a ne devrait pas arriver si id_mere != '',
// mais je ne prends pas le risque
if (!$b) break;
} }
$code = '$PileNum[$SP' . (($n==0) ? "" : "+$n") . ']'; $code = "\$PileNum[$id_mere]";
$boucles[$id_boucle]->numrows = true; $boucles[$id_mere]->numrows = true;
# spip_log("TOTAL_BOUCLE: $id_boucle dans $id_mere");
break; break;
case 'POINTS': case 'POINTS':
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Veuillez vous inscrire ou vous pour commenter