From 86c02af769db996c3d18ad72860c3a13e2d8fc1c Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Wed, 25 Aug 2004 23:16:19 +0000 Subject: [PATCH] bugs cvs (spip-contrib & pierre andrews) --- inc-public-global.php3 | 24 +++++++++++++++++++++++- inc-public.php3 | 11 +++++++---- inc-text-squel.php3 | 3 ++- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/inc-public-global.php3 b/inc-public-global.php3 index 2f159630f8..cf73511b86 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -96,9 +96,23 @@ function obtenir_page ($contexte, $chemin_cache, $delais, $use_cache, $fond, $in // Appeler cette fonction pour obtenir la page principale // function afficher_page_globale ($fond, $delais, &$use_cache) { - global $flag_preserver, $recalcul, $lastmodified; + global $flag_preserver, $recalcul, $preview, $lastmodified; include_local ("inc-cache.php3"); + // demande de previsualisation ? + // -> inc-calcul.php3 n'enregistrera pas les fichiers caches + // -> inc-reqsql-squel.php3 acceptera les objets non 'publie' + if ($preview == 'oui') { + // Verifier qu'on a le droit de previsualisation + $statut = $GLOBALS['auteur_session']['statut']; + if ($statut=='0minirezo' OR + (lire_meta('preview_redacteurs')=='oui' AND $statut=='1comite')) { + $recalcul = 'oui'; + $delais = 0; + } else + $preview = false; + } + $chemin_cache = 'CACHE/'.generer_nom_fichier_cache('', $fond); determiner_cache($delais, $use_cache, $chemin_cache); @@ -246,6 +260,14 @@ function cherche_image_nommee($nom) { } } +// +// Leve un drapeau si le squelette donne une page generant de graves erreurs php +// +function spip_error_handler (&$errno, $errstr) { + global $drapeau_erreur_page; + if ($errno && (E_ERROR | E_WARNING | E_PARSE)) + $drapeau_erreur_page = true; +} // La fonction ci-dessous permet a un script de flusher ses resultats partiels function spip_ob_flush() { diff --git a/inc-public.php3 b/inc-public.php3 index 4f31dde581..927d233fed 100644 --- a/inc-public.php3 +++ b/inc-public.php3 @@ -102,9 +102,12 @@ else { if ($affiche_boutons_admin = (!$GLOBALS['flag_preserver'] AND $GLOBALS['HTTP_COOKIE_VARS']['spip_admin'])) { include_local('inc-admin.php3'); - $page['texte'] .= '<'.'?php - define("PAS_D_ERREUR_SQUELETTE", 1); - ?'.'>'; + + // recuperer les parse errors etc. + $drapeau_erreur_page = false; + if (function_exists('set_error_handler')) + set_error_handler('spip_error_handler'); + if ($flag_ob) echo afficher_boutons_admin('', true).'<!-- @@START@@ -->'; } @@ -115,7 +118,7 @@ else { eval('?' . '>' . $page['texte']); // page 'php' // en cas d'erreur afficher un message + demander les boutons de debug - if (!defined("PAS_D_ERREUR_SQUELETTE")) { + if ($drapeau_erreur_page) { echo "<hr /><h2>". _L("Erreur dans le squelette")." $fond.html</h2>"; $GLOBALS['bouton_admin_debug'] = true; diff --git a/inc-text-squel.php3 b/inc-text-squel.php3 index 6d99fe2d29..7f83cb6044 100644 --- a/inc-text-squel.php3 +++ b/inc-text-squel.php3 @@ -73,7 +73,8 @@ function calculer_texte($texte, $id_boucle, &$boucles, $id_mere) { "_T('$module:$chaine')", $id_boucle, $boucles, - $id_mere); + $id_mere, + 'php'); // ne pas manger les espaces avec trim() $code = str_replace($match[0], "'$ferme_multi.$c.$ouvre_multi'", $code); } -- GitLab