From 8c9b993dce235cb6355473b555ea6fb71bba258d Mon Sep 17 00:00:00 2001
From: "Committo,Ergo:sum" <esj@rezo.net>
Date: Wed, 29 Jul 2009 05:00:08 +0000
Subject: [PATCH] =?UTF-8?q?R=C3=A9=C3=A9criture=20des=20appels=20au=20d?=
 =?UTF-8?q?=C3=A9busqueur=20afin=20qu'il=20puisse=20=C3=AAtre=20surcharg?=
 =?UTF-8?q?=C3=A9.=20La=20fonction=20{{{erreur=5Fsquelette}}}=20se=20r?=
 =?UTF-8?q?=C3=A9duit=20=C3=A0=20charger=20la=20version=20disponible=20et?=
 =?UTF-8?q?=20=C3=A0=20l'appliquer,=20et=20migre=20donc=20dans=20{{{utils.?=
 =?UTF-8?q?php}}}.=20L=C3=A0=20fonction=20{{{afficher=5Ferreurs=5Fpage}}}?=
 =?UTF-8?q?=20reste=20appel=C3=A9e=20directement=20en=20certains=20endroit?=
 =?UTF-8?q?s,=20notamment=20pour=20la=20double=20occurrence=20de=20INSERT?=
 =?UTF-8?q?=5FHEAD=20ce=20qui=20ne=20me=20semble=20pas=20motiv=C3=A9.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/base/abstract_sql.php               |  1 -
 ecrire/base/connect_sql.php                |  1 -
 ecrire/exec/valider_xml.php                |  2 --
 ecrire/inc/actions.php                     |  2 +-
 ecrire/inc/filtres.php                     |  2 +-
 ecrire/inc/utils.php                       |  4 +++
 ecrire/index.php                           |  2 +-
 ecrire/public.php                          |  6 ++---
 ecrire/public/compiler.php                 | 22 ++++++++--------
 ecrire/public/{debug.php => debusquer.php} | 30 ++++++----------------
 ecrire/public/styliser.php                 |  2 --
 ecrire/public/tracer.php                   |  6 ++---
 ecrire/xml/valider.php                     |  2 ++
 13 files changed, 32 insertions(+), 50 deletions(-)
 rename ecrire/public/{debug.php => debusquer.php} (96%)

diff --git a/ecrire/base/abstract_sql.php b/ecrire/base/abstract_sql.php
index f12c0fe4b8..6f245906dd 100644
--- a/ecrire/base/abstract_sql.php
+++ b/ecrire/base/abstract_sql.php
@@ -95,7 +95,6 @@ function sql_select (
 
 	if (!is_array($res)) return $res;
 	list($query, $num, $msg) = $res;
-	include_spip('public/debug');
 	erreur_squelette($msg, $num, $query);
 	return false;
 }
diff --git a/ecrire/base/connect_sql.php b/ecrire/base/connect_sql.php
index a9636abe77..ba20018504 100644
--- a/ecrire/base/connect_sql.php
+++ b/ecrire/base/connect_sql.php
@@ -32,7 +32,6 @@ function spip_connect($serveur='', $version='') {
 	if (isset($connexions[$index][$version])) return $connexions[$index];
 
 	include_spip('base/abstract_sql');
-	if (isset($_GET['var_profile'])) include_spip('public/debug');
 	$install = (_request('exec') == 'install');
 
 	// Premiere connexion ? 
diff --git a/ecrire/exec/valider_xml.php b/ecrire/exec/valider_xml.php
index 3a8079dc0b..33acc1a580 100644
--- a/ecrire/exec/valider_xml.php
+++ b/ecrire/exec/valider_xml.php
@@ -12,7 +12,6 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
-include_spip('public/debug');
 
 // http://doc.spip.org/@exec_valider_xml_dist
 function exec_valider_xml_dist()
@@ -33,7 +32,6 @@ function valider_xml_ok($url, $req_ext)
 		$onfocus = "this.value='';";
 		$texte = $bandeau = $err = '';
 	} else {
-		include_spip('public/debug');
 		include_spip('inc/distant');
 		if (is_dir($url)) {
 			$dir = (substr($url,-1,1) === '/') ? $url : "$url/";
diff --git a/ecrire/inc/actions.php b/ecrire/inc/actions.php
index 0b7d19a6c6..963b9be1e7 100644
--- a/ecrire/inc/actions.php
+++ b/ecrire/inc/actions.php
@@ -215,7 +215,7 @@ function ajax_retour($corps,$xml = true)
 		$debut = $xml?'<' . "?xml version='1.0' encoding='" . $c . "'?" . ">\n":'';
 	}
 	if (count($GLOBALS['tableau_des_erreurs']) AND isset($_COOKIE['spip_admin'])) {
-		find_in_path('debug.php','public/',true);
+		include_spip('public/debusquer');
 		$corps = affiche_erreurs_page($GLOBALS['tableau_des_erreurs']) . $corps;
 	}
 
diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 57830a11fe..d085b93396 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2090,7 +2090,7 @@ function env_to_attributs ($texte, $ignore_params=array()) {
 function f_jQuery ($texte) {
 	static $doublon=0;
 	if ($doublon++) {
-		include_spip('public/debug');
+		include_spip('public/debusquer');
 		$texte = affiche_erreurs_page(array(
 			array("#INSERT_HEAD",_T('double_occurrence')))
 		) . $texte;
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index b1bbfefa84..a22cb1e58a 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -1644,6 +1644,10 @@ function exec_info_dist() {
 		echo "pas admin";
 }
 
+function erreur_squelette($message='', $lieu='', $quoi='') {
+	$debusquer = charger_fonction('debusquer', 'public');
+	return $debusquer($message, $lieu, $quoi);
+}
 
 /**
  * La fonction de base de SPIP : un squelette + un contexte => une page.
diff --git a/ecrire/index.php b/ecrire/index.php
index 0392e002a2..186bda9a2b 100644
--- a/ecrire/index.php
+++ b/ecrire/index.php
@@ -154,11 +154,11 @@ $var_f = charger_fonction($exec);
 $var_f();
 
 if ($GLOBALS['var_mode'] == 'debug') {
-	include_spip('public/debug');
 	$var_mode_objet = _request('var_mode_objet');
 	erreur_squelette("", "", $var_mode_objet);
 }
 if (isset($tableau_des_erreurs) AND count($tableau_des_erreurs) AND $affiche_boutons_admin)
+	include_spip('public/debusquer');
 	echo affiche_erreurs_page($tableau_des_erreurs);
 
 ?>
diff --git a/ecrire/public.php b/ecrire/public.php
index 0ae5a135af..5297076eba 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -181,7 +181,6 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 		// la memoriser dans le tableau des erreurs
 		// On ne revient pas ici si le nb d'erreurs > 4
 		if ($res === false AND $affiche_boutons_admin) {
-			include_spip('public/debug');
 			erreur_squelette(_T('zbug_erreur_execution_page'));
 		}
 	}
@@ -192,7 +191,6 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 		$var_mode_affiche = _request('var_mode_affiche');
 		$var_mode_objet = _request('var_mode_objet');
 		$GLOBALS['debug_objets'][$var_mode_affiche][$var_mode_objet . 'tout'] = ($var_mode_affiche== 'validation' ? $page['texte'] :"");
-		include_spip('public/debug');
 		if ($GLOBALS['debug_objets']['sourcefile']) {
 			erreur_squelette('', '', $var_mode_objet);
 		}
@@ -207,12 +205,12 @@ if (isset($GLOBALS['_INC_PUBLIC'])) {
 	//
 	page_base_href($page['texte']);
 
-	// (c'est ici qu'on fait var_recherche, tidy, boutons d'admin,
+	// (c'est ici qu'on fait var_recherche, validation, boutons d'admin,
 	// cf. public/assembler.php)
 	echo pipeline('affichage_final', $page['texte']);
 
 	if (count($tableau_des_temps) AND $affiche_boutons_admin) {
-		include_spip('public/debug');
+		include_spip('public/tracer');
 		echo chrono_requete($tableau_des_temps);
 	}
 
diff --git a/ecrire/public/compiler.php b/ecrire/public/compiler.php
index bf24150308..957c37cff6 100644
--- a/ecrire/public/compiler.php
+++ b/ecrire/public/compiler.php
@@ -140,8 +140,7 @@ function calculer_inclure($p, $descr, &$boucles, $id_boucle) {
 		else $path = "find_in_path(\"$fichier\")";
 		$code = "if (is_readable(\$path = $path))
  		include \$path;
-	else { include_spip(\"public/debug\");
-			erreur_squelette(_T(\"zbug_info_erreur_squelette\"),
+	else { 	erreur_squelette(_T(\"zbug_info_erreur_squelette\"),
 				 _T(\"fichier_introuvable\", array(\"fichier\" => \"$fichier\")));}";
 	} else 	{
 		$_contexte['fond'] = "\'fond\' => ' . argumenter_squelette(" . $code  . ") . '";
@@ -592,12 +591,10 @@ function calculer_liste($tableau, $descr, &$boucles, $id_boucle='') {
 			}
 			return '(' . substr($res,2+$descr['niv']) . ')';
 		}
-	} else return "@debug_sequence('$id_boucle', '" .
-	  ($descr['nom']) .
-	  "', " .
-	  $descr['niv'] .
-	  ",  array(" .
-	  join(" ,\n$tab", $codes) . "))";
+	} else {
+	  $nom = $descr['nom'] . $id_boucle .  ($descr['niv']?$descr['niv']:'');
+	  return "join('', array_map('array_shift', \$GLOBALS['debug_objets']['sequence']['$nom'] = array(" .  join(" ,\n$tab", $codes) . ")))";
+	}
 }
 
 define('_REGEXP_COND_VIDE_NONVIDE',"/^[(](.*)[?]\s*''\s*:\s*('[^']+')\s*[)]$/");
@@ -736,7 +733,7 @@ function compile_cas($tableau, $descr, &$boucles, $id_boucle) {
 		if ($code != "''") {
 			$code = compile_retour($code, $avant, $apres, $altern, $tab, $descr['niv']);
 			$codes[]= (($mode == 'validation') ?
-				"array(" . $p->ligne . ", '$commentaire', $code)"
+				"array($code, '$commentaire', " . $p->ligne . ")"
 				: (($mode == 'code') ?
 				"\n// $commentaire\n$code" :
 				$code));
@@ -975,7 +972,9 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 	}
 
 	if ($debug)
-		$code = "\n\n/*\n" . public_decompiler($squelette) . "\n*/\n";
+		$code = "\n\n/*\n" . 
+			str_replace('*/', '* /', public_decompiler($squelette)) 
+			. "\n*/\n";
 	else $code = "";
 
 	foreach($boucles as $id => $boucle) {
@@ -983,7 +982,8 @@ function compiler_squelette($squelette, $boucles, $nom, $descr, $sourcefile, $co
 		  $boucle->type_requete .
 		  " " .
 		  (!$debug ? '' : 
-			decompiler_criteres($boucle->param, $boucle->criteres)) .
+		   str_replace('*/', '* /', 
+			       decompiler_criteres($boucle->param, $boucle->criteres))) .
 		  " */\n\n" .
 		  $boucle->return;
 	}
diff --git a/ecrire/public/debug.php b/ecrire/public/debusquer.php
similarity index 96%
rename from ecrire/public/debug.php
rename to ecrire/public/debusquer.php
index e4a10966fe..9a4d6ea647 100644
--- a/ecrire/public/debug.php
+++ b/ecrire/public/debusquer.php
@@ -133,8 +133,8 @@ define('_DEBUG_MAX_SQUELETTE_ERREURS', 4);
 // pour les appels involontaires ($message non vide => erreur)
 // et volontaires.
 //
-// http://doc.spip.org/@erreur_squelette
-function erreur_squelette($message='', $lieu='', $quoi='') {
+
+function public_debusquer_dist($message='', $lieu='', $quoi='') {
 	global $tableau_des_erreurs;
 
 	if ($message) {
@@ -155,20 +155,6 @@ function erreur_squelette($message='', $lieu='', $quoi='') {
 	}
 }
 
-// appelee a chaque sortie de sequence (compilo.php)
-// http://doc.spip.org/@debug_sequence
-function debug_sequence($id, $nom, $niv, $sequence) {
-	global $debug_objets;
-
-	if (!$niv)
-	  {
-	    $debug_objets['sequence'][$nom.$id] = $sequence;
-	  }
-	$res = "";
-	foreach($sequence as $v) if (is_array($v)) $res .= $v[2];
-	return $res;	
-}
-
 // http://doc.spip.org/@trouve_boucle_debug
 function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 {
@@ -178,15 +164,15 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 	if (is_array($debug_objets['sequence'][$id])) {
 	 foreach($debug_objets['sequence'][$id] as $v) {
 
-	  if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/s', $v[2],$r))
-	    $y = substr_count($v[2], "\n");
+	  if (!preg_match('/^(.*)(<\?.*\?>)(.*)$/s', $v[0],$r))
+	    $y = substr_count($v[0], "\n");
 	  else {
 	    if ($v[1][0] == '#')
 	      // balise dynamique
-	      $incl = $debug_objets['resultat'][$v[0]];
+	      $incl = $debug_objets['resultat'][$v[2]];
 	    else
 	      // inclusion
-	      $incl = $debug_objets['squelette'][trouve_squelette_inclus($v[2])];
+	      $incl = $debug_objets['squelette'][trouve_squelette_inclus($v[0])];
 	    $y = substr_count($incl, "\n")
 	      + substr_count($r[1], "\n") 
 	      + substr_count($r[3], "\n");
@@ -198,7 +184,7 @@ function trouve_boucle_debug($n, $nom, $debut=0, $boucle = "")
 	      if ($incl = trouve_squelette_inclus($v[1]))
 		return trouve_boucle_debug($n, $incl, $debut);
 	    }
-	    return array($nom, $boucle, $v[0] -1 + $n - $debut );
+	    return array($nom, $boucle, $v[2] -1 + $n - $debut );
 	  }
 	  $debut += $y;
 	 }
@@ -357,7 +343,7 @@ function debug_dumpfile ($texte, $fonc) {
 				_T($titre),	       
 				' ',
 				$err,
-				"</legend>";
+				"</legend>"; 
 		echo $texte;
 		echo "</fieldset></div>";
 		echo "\n</div>";
diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php
index e731a9d842..1dbef1105c 100644
--- a/ecrire/public/styliser.php
+++ b/ecrire/public/styliser.php
@@ -49,8 +49,6 @@ function public_styliser_dist($fond, $contexte, $lang='', $connect='', $ext='htm
 
 	// pas de squelette : erreur !
 	if (!$squelette) {
-		// Indiquer une erreur squelette
-		include_spip('public/debug');
 		erreur_squelette(_T('info_erreur_squelette2',
 			array('fichier'=>"'$fond.$ext'")),
 			$GLOBALS['dossier_squelettes']);
diff --git a/ecrire/public/tracer.php b/ecrire/public/tracer.php
index f7d547467f..3b27d08ef5 100644
--- a/ecrire/public/tracer.php
+++ b/ecrire/public/tracer.php
@@ -33,12 +33,9 @@ function trace_query_end($query, $start, $result, $err, $serveur='')
 		trace_query_chrono($start, microtime(), $query, $result, $serveur);
 	if (!($err = sql_errno())) return $result;
 	$err .= ' '.sql_error();
-	if (autoriser('debug')) {
-		include_spip('public/debug');
-		$tableau_des_erreurs[] = array(
+	$tableau_des_erreurs[] = array(
 		_T('info_erreur_requete'). " "  .  htmlentities($query),
 		"&laquo; " .  htmlentities($err)," &raquo;");
-	}
 	return $result;
 }
 
@@ -139,6 +136,7 @@ function chrono_requete($temps)
 	     ("<tr><td>" .  count($temps) . " </td><td> " . _T('info_total') . '</td><td>' . $total . "</td></td><td></td></tr>"))
 	  . "</table>";
 
+	include_spip('public/debusquer');
 	return (_DIR_RESTREINT ? '' : affiche_erreurs_page($GLOBALS['tableau_des_erreurs']))
 	. affiche_erreurs_page($temps, $titre);
 }
diff --git a/ecrire/xml/valider.php b/ecrire/xml/valider.php
index f72fff38e7..3b8851b025 100644
--- a/ecrire/xml/valider.php
+++ b/ecrire/xml/valider.php
@@ -310,6 +310,8 @@ function phraserTout($phraseur, $data)
 // http://doc.spip.org/@emboite_texte
 function emboite_texte($res, $fonc='',$self='')
 {
+	include_spip('public/debusquer');
+
 	list($texte, $errs) = $res;
 	if (!$texte)
 		return array(ancre_texte('', array('','')), false);
-- 
GitLab