From d692e075be63b60bc5a002989aa4297e92159aff Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Tue, 10 Jun 2014 07:34:58 +0000
Subject: [PATCH] =?UTF-8?q?en=20cas=20d'erreur=20d'execution=20sur=20un=20?=
 =?UTF-8?q?squelette,=20afficher=20le=20message=20d'erreur=20en=20fran?=
 =?UTF-8?q?=C3=A7ais=20(et=20non=20zbug=5Ferreur=5Fexecution=5Fpage)=20ain?=
 =?UTF-8?q?si=20que=20le=20code=20PHP=20qu'on=20a=20essay=C3=A9=20d'ex?=
 =?UTF-8?q?=C3=A9cuter.=20Si=20quelqu'un=20sait=20comment=20trouver=20la?=
 =?UTF-8?q?=20ligne=20de=20l'erreur=20et=20la=20mettre=20en=20=C3=A9videnc?=
 =?UTF-8?q?e=20avec=20un=20fond=20jaune=20fluo,=20gogogo?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 ecrire/public.php              |  9 ++++++++-
 ecrire/public/evaluer_page.php | 12 +++++++++++-
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/ecrire/public.php b/ecrire/public.php
index 1be36db8bc..560b6e7b9a 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -149,7 +149,14 @@ if (isset($GLOBALS['_INC_PUBLIC']) AND $GLOBALS['_INC_PUBLIC']) {
 	include _ROOT_RESTREINT."public/evaluer_page.php";
 	envoyer_entetes($page['entetes']);
 	if ($res === false) {
-		$msg = array('zbug_erreur_execution_page');
+		include_spip('inc/autoriser');
+		$err = _T('zbug_erreur_execution_page');
+		if (autoriser('webmestre')) {
+			$err .= "\n<hr />\n"
+				.highlight_string($page['codephp'],true)
+				."\n<hr />\n";
+		}
+		$msg = array($err);
 		erreur_squelette($msg);
 	}
 
diff --git a/ecrire/public/evaluer_page.php b/ecrire/public/evaluer_page.php
index 85f5611097..775df1807e 100644
--- a/ecrire/public/evaluer_page.php
+++ b/ecrire/public/evaluer_page.php
@@ -53,9 +53,19 @@ if ($page['process_ins'] != 'html') {
 		$page['texte'] = str_replace('<'.'?xml', "<\1?xml", $page['texte']);
 
 	$res = eval('?' . '>' . $page['texte']);
-	$page['texte'] = ob_get_contents();
+	$eval = ob_get_contents();
 	ob_end_clean();
 
+	// erreur d'exécution ?
+	// enregistrer le code pour afficher zbug_erreur_execution_page
+	if (false === $res) {
+		$page['codephp'] = $page['texte'];
+		$page['texte'] = '<!-- erreur -->';
+	}
+	else {
+		$page['texte'] = $eval;
+	}
+
 	$page['process_ins'] = 'html';
 
 	if (strpos($page['texte'],'?xml')!==false)
-- 
GitLab