From 06b6af7382442bf75fd27e21fae17b62e1b369bf Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Sat, 8 Aug 2009 13:05:08 +0000
Subject: [PATCH] =?UTF-8?q?Renommage=20de=20{{{denoncer=5Finclure=5Fdynami?=
 =?UTF-8?q?que}}}=20(car=20[14363]=20avait=20en=20fait=20renomm=C3=A9=20{{?=
 =?UTF-8?q?{fliquer=5Finclure=5Fdynamique}}}=20en=20{{{memoriser=5Fcontext?=
 =?UTF-8?q?e=5Fcompil}}})=20en=20{{{reconstruire=5Fcontexte=5Fcompil}}}=20?=
 =?UTF-8?q?avec=20un=20petit=20chgt=20de=20fonctionnalit=C3=A9,=20et=20pet?=
 =?UTF-8?q?ites=20am=C3=A9liorations=20pour=20avoir=20des=20appels=20au=20?=
 =?UTF-8?q?d=C3=A9busqueur=20plus=20uniformes.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/balise/formulaire_ecrire_auteur.php |  3 ++-
 ecrire/balise/formulaire_signature.php     |  3 ++-
 ecrire/balise/formulaire_site.php          |  3 ++-
 ecrire/base/abstract_sql.php               | 11 ++-------
 ecrire/index.php                           |  2 +-
 ecrire/public/compiler.php                 | 27 ++++++++++++++++------
 ecrire/public/composer.php                 |  6 ++---
 ecrire/public/criteres.php                 | 19 +++++++--------
 ecrire/public/quete.php                    | 12 ----------
 9 files changed, 42 insertions(+), 44 deletions(-)

diff --git a/ecrire/balise/formulaire_ecrire_auteur.php b/ecrire/balise/formulaire_ecrire_auteur.php
index cac9483582..4a8c0ffe40 100644
--- a/ecrire/balise/formulaire_ecrire_auteur.php
+++ b/ecrire/balise/formulaire_ecrire_auteur.php
@@ -33,7 +33,8 @@ function balise_FORMULAIRE_ECRIRE_AUTEUR_stat($args, $context_compil) {
 				array ('champ' => 'FORMULAIRE_ECRIRE_AUTEUR',
 					'motif' => 'AUTEURS/ARTICLES'));
 
-		denoncer_inclure_dynamique($msg, $context_compil);
+		include_spip('public/compiler');
+		erreur_squelette($msg, reconstruire_contexte_compil($context_compil));
 		return '';
 	}
 	// Si on est dans un contexte article, 
diff --git a/ecrire/balise/formulaire_signature.php b/ecrire/balise/formulaire_signature.php
index 84a3246451..5d969c87b6 100644
--- a/ecrire/balise/formulaire_signature.php
+++ b/ecrire/balise/formulaire_signature.php
@@ -38,7 +38,8 @@ function balise_FORMULAIRE_SIGNATURE_stat($args, $context_compil) {
 		$msg = array('zbug_champ_hors_motif',
 				array ('champ' => 'FORMULAIRE_SIGNATURE',
 				       'motif' => 'ARTICLES'));
-		denoncer_inclure_dynamique($msg, $context_compil);
+		include_spip('public/compiler');
+		erreur_squelette($msg, reconstruire_contexte_compil($context_compil));
 		return '';
 	}
 	// article sans petition => pas de balise
diff --git a/ecrire/balise/formulaire_site.php b/ecrire/balise/formulaire_site.php
index a92f8f4bd9..af25f7ed3e 100644
--- a/ecrire/balise/formulaire_site.php
+++ b/ecrire/balise/formulaire_site.php
@@ -28,7 +28,8 @@ function balise_FORMULAIRE_SITE_stat($args, $context_compil) {
 		$msg = array('zbug_champ_hors_motif',
 				array ('champ' => 'FORMULAIRE_SITE',
 					'motif' => 'RUBRIQUES'));
-		denoncer_inclure_dynamique($msg, $context_compil);
+		include_spip('public/compiler');
+		erreur_squelette($msg, reconstruire_contexte_compil($context_compil));
 		return '';
 	}
 	// Verifier que les visisteurs sont autorises a proposer un site
diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index dc652b5f17..e0183102b8 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -99,15 +99,8 @@ function sql_select (
 	}
 
 	if (is_resource($res)) return $res;
-	$errno = sql_errno();
-	$error = sql_error();
-	$msg = array($errno, $error, $query);
-	if (!is_array($option))
-		erreur_squelette($msg);
-	else {
-		include_spip('quete.php');
-		denoncer_inclure_dynamique($msg, $option);
-	}
+	include_spip('public/compiler');
+	erreur_squelette(array(sql_errno(), sql_error(), $query), reconstruire_contexte_compil($context_compil));
 	return false;
 }
 
diff --git a/ecrire/index.php b/ecrire/index.php
index 21de9a6d03..5d2e0038f8 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -158,7 +158,7 @@ $var_f = charger_fonction($exec);
 $var_f();
 
 if ($GLOBALS['var_mode'] == 'debug') {
-	erreur_squelette("", "");
+	erreur_squelette('', '');
 }
 if (isset($tableau_des_erreurs) AND count($tableau_des_erreurs) AND $affiche_boutons_admin) {
 	include_spip('public/debusquer');
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index 865a2ebcf3..59bc91e338 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -118,8 +118,8 @@ function argumenter_inclure($params, $rejet_filtres, $p, &$boucles, $id_boucle,
 
 define('CODE_INCLURE_SCRIPT', 'if (is_readable($path = %s))
 	include $path;
-else  denoncer_inclure_dynamique(array("fichier_introuvable", array("fichier" => "%s")),
-		array(%s));'
+else { include_spip("public/compiler");
+	erreur_squelette(array("fichier_introuvable", array("fichier" => "%s")), reconstruire_contexte_compil(array(%s)));}'
 );
 
 // http://doc.spip.org/@calculer_inclure
@@ -438,6 +438,18 @@ function memoriser_contexte_compil($p) {
 		_q($GLOBALS['spip_lang'])));
 }
 
+function reconstruire_contexte_compil($context_compil)
+{
+	if (!is_array($context_compil)) return $context_compil;
+	include_spip('public/interfaces');
+	$p = new Contexte;
+	$p->descr = array('sourcefile' => $context_compil[0],
+				  'nom' => $context_compil[1]);
+	$p->id_boucle = $context_compil[2];
+	$p->ligne = $context_compil[3];
+	$p->lang = $context_compil[4];
+	return $p;
+}
 
 // http://doc.spip.org/@calculer_dec
 function calculer_dec($nom, $val)
@@ -914,14 +926,15 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 					$boucles[$id]->jointures = $x;
 			} else {
 				$boucles[$id]->type_requete = '';
-				$x = $boucles[$id]->sql_serveur;
-				$x = $x ? "$x:$type" : $type;
-				// ne pas renvoyer d'erreur si la table est optionnelle
-				// declare par ? avant ) dans <BOUCLE_A(table ?)>
+				// Pas une erreur si la table est optionnelle
 				if (!$boucles[$id]->table_optionnelle) {
+					$boucle = $boucles[$id];
+					$x = (!$boucle->sql_serveur ? '' :
+					      ($boucle->sql_serveur . ":")) .
+					  $type;
 					$msg = array('zbug_table_inconnue',
 							array('table' => $x));
-					erreur_squelette($msg, $boucles[$id]);
+					erreur_squelette($msg, $boucle);
 				}
 			}
 		}
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 576a5f4395..2fc3c2c40d 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -68,7 +68,7 @@ function public_composer_dist($squelette, $mime_type, $gram, $source, $connect='
 		$f = $boucle->return;
 		if (@eval("return true; $f ;") ===  false) {
 		// Code syntaxiquement faux (critere etc mal programme')
-			erreur_squelette(_T('zbug_erreur_compilation'), $boucle); 
+			erreur_squelette(_T('zbug_erreur_compilation'), $boucle);
 			// continuer pour trouver d'autres fautes eventuelles
 			// mais prevenir que c'est mort
 			$nom = '';
@@ -366,7 +366,7 @@ function executer_balise_dynamique($nom, $args, $context_compil) {
 		else {
 			$msg =  "<span class='spip-debug-arg'>$nom</span> " .
 			  _T('zxml_inconnu_balise');
-			denoncer_inclure_dynamique($msg, $context_compil);
+			erreur_squelette($msg, reconstruire_contexte_compil($context_compil));
 			return '';
 		}
 	}
@@ -389,7 +389,7 @@ function executer_balise_dynamique($nom, $args, $context_compil) {
 
 			$msg =  "<span class='spip-debug-arg'>$nom</span> " .
 			  _T('zxml_inconnu_balise');
-			denoncer_inclure_dynamique($msg, $context_compil);
+			erreur_squelette($msg, reconstruire_contexte_compil($context_compil));
 			return '';
 		}
 	}
diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 252fc985fc..3f73b400e8 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -625,15 +625,16 @@ function calculer_critere_parties_aux($idb, &$boucles, $param) {
 // Sinon, ne retourne rien (affectation directe dans l'arbre)
 
 // http://doc.spip.org/@calculer_criteres
-function calculer_criteres ($idb, &$boucles) {
-
+function calculer_criteres ($idb, &$boucles)
+{
+	$msg = '';
+	$boucle = $boucles[$idb];
+	$table = strtoupper($boucle->id_table);
 	$defaut = charger_fonction('DEFAUT', 'calculer_critere');
-	$err = '';
-	foreach($boucles[$idb]->criteres as $crit) {
+	foreach($boucle->criteres as $crit) {
 		$critere = $crit->op;
 		// critere personnalise ?
-		if (
-		  (!function_exists($f="critere_".strtoupper($boucles[$idb]->id_table)."_".$critere))
+		if ((!function_exists($f="critere_".$table."_".$critere))
 		AND (!function_exists($f=$f."_dist"))
 		AND (!function_exists($f="critere_".$critere))
 		AND (!function_exists($f=$f."_dist"))	) {
@@ -645,11 +646,11 @@ function calculer_criteres ($idb, &$boucles) {
 
 		// Gestion centralisee des erreurs pour pouvoir propager
 		if (is_array($res)) {
-			$err = $res;
-			erreur_squelette($res, $boucles[$idb]);
+			$msg = $res;
+			erreur_squelette($msg, $boucle);
 		}
 	}
-	return $err;
+	return $msg;
 }
 
 // Madeleine de Proust, revision MIT-1958 sqq, revision CERN-1989
diff --git a/ecrire/public/quete.php b/ecrire/public/quete.php
index aae7f673f1..c2ddbeb758 100644
--- a/ecrire/public/quete.php
+++ b/ecrire/public/quete.php
@@ -265,16 +265,4 @@ function quete_debut_pagination($primary,$valeur,$pas,$res,$serveur=''){
 	// sinon, calculer le bon numero de page
 	return floor($pos/$pas)*$pas;
 }
-
-function denoncer_inclure_dynamique($msg, $context_compil)
-{
-	include_spip('public/interfaces');
-	$p = new Contexte;
-	$p->descr = array('sourcefile' => $context_compil[0],
-				  'nom' => $context_compil[1]);
-	$p->id_boucle = $context_compil[2];
-	$p->ligne = $context_compil[3];
-	$p->lang = $context_compil[4];
-	erreur_squelette($msg, $p);
-}
 ?>
\ No newline at end of file
-- 
GitLab