Skip to content
Extraits de code Groupes Projets
Valider 963f1f08 rédigé par Fil's avatar Fil
Parcourir les fichiers

un peu de nettoyage de tout ça (débuggueur, parcours du code, var_recherche et codes php, etc.)

La gestion de certaines erreurs php (parse errors) dans les squelettes a disparu (code mangé par ESJ qui avait très faim de bugs-frites)
parent 9cfb8e67
Branches
Étiquettes
Aucune requête de fusion associée trouvée
...@@ -137,18 +137,14 @@ function spip_error_handler ($errno, $errmsg, $filename, $linenum, $vars) { ...@@ -137,18 +137,14 @@ function spip_error_handler ($errno, $errmsg, $filename, $linenum, $vars) {
global $tableau_des_erreurs, $page; global $tableau_des_erreurs, $page;
// On ne veut intercepter que les erreurs des $page['texte'], // On ne veut intercepter que les erreurs des $page['texte'],
// si le code avait ete dvelopp proprement ds le dpart // et pas celles de SPIP :^)
// ce serait moins approximatif que ci-dessous if (($errno & (E_ERROR | E_WARNING | E_PARSE))
&& (!strpos($filename, 'ecrire/'))) {
if (($errno & (E_ERROR | E_WARNING | E_PARSE)) &&
(!strpos($filename, 'ecrire/'))) # si $filename = inc-public + eval, denoncer le squelette,
{ # sinon c'est un appel du handler explicitement par le compilateur
# qui donne les bons arguments tout de suite, mais avec linenum = ''
# si $filename = inc-public + eval, dnoncer le squelette, $tableau_des_erreurs[] = array($errno,
# sinon c'est un appel du handler explicitement par le compilateur
# qui donne les bons arguments tout de suite, mais avec linenum = ''
$tableau_des_erreurs[]
= array($errno,
$errmsg, $errmsg,
($linenum ? "ligne $linenum" : ''), ($linenum ? "ligne $linenum" : ''),
((!strpos($filename, 'inc-public.php3(')) ? ((!strpos($filename, 'inc-public.php3(')) ?
...@@ -183,19 +179,24 @@ function affiche_erreurs_execution_page() { ...@@ -183,19 +179,24 @@ function affiche_erreurs_execution_page() {
global $tableau_des_erreurs, $affiche_boutons_admin; global $tableau_des_erreurs, $affiche_boutons_admin;
if ($affiche_boutons_admin) { if ($affiche_boutons_admin) {
echo "<div style='position: absolute; top: 10px; include_ecrire('inc_presentation.php3');
z-index: 1000; background-color: pink;'>";
echo "<h2>", echo "<div id='spip-debug' style='position: absolute; top: 20;",
" z-index: 1000;'><ul><li>",
_L("Erreur(s) dans le squelette"), _L("Erreur(s) dans le squelette"),
"</h2>",
"<code><ul>"; ## aide locale courte a ecrire, avec lien vers une grosse page de documentation
# aide('erreur_compilation'),
"<br /></li>",
"<ul>";
foreach ($tableau_des_erreurs as $err) { foreach ($tableau_des_erreurs as $err) {
echo "<li>$err[2] $err[3] $err[1]", echo "<li>$err[2] $err[3] $err[1]",
"<small>$err[4]</small><br><br>", "<small>$err[4]</small><br />",
"</li>\n"; "</li>\n";
} }
echo "</ul></code>"; echo "</ul>";
echo "</div>"; echo "</ul></div>";
$GLOBALS['bouton_admin_debug'] = true; $GLOBALS['bouton_admin_debug'] = true;
} }
} }
......
...@@ -255,7 +255,6 @@ function balise_RECHERCHE_dist($p) { ...@@ -255,7 +255,6 @@ function balise_RECHERCHE_dist($p) {
function balise_COMPTEUR_BOUCLE_dist($p) { function balise_COMPTEUR_BOUCLE_dist($p) {
if ($p->id_mere === '') { if ($p->id_mere === '') {
include_local("inc-admin.php3");
erreur_squelette(_L("Champ #COMPTEUR_BOUCLE hors boucle"), $p->id_boucle); erreur_squelette(_L("Champ #COMPTEUR_BOUCLE hors boucle"), $p->id_boucle);
$p->code = "''"; $p->code = "''";
} else { } else {
...@@ -267,7 +266,6 @@ function balise_COMPTEUR_BOUCLE_dist($p) { ...@@ -267,7 +266,6 @@ function balise_COMPTEUR_BOUCLE_dist($p) {
function balise_TOTAL_BOUCLE_dist($p) { function balise_TOTAL_BOUCLE_dist($p) {
if ($p->id_mere === '') { if ($p->id_mere === '') {
include_local("inc-admin.php3");
erreur_squelette(_L("Champ #TOTAL_BOUCLE hors boucle"), $p->id_boucle); erreur_squelette(_L("Champ #TOTAL_BOUCLE hors boucle"), $p->id_boucle);
$p->code = "''"; $p->code = "''";
} else { } else {
...@@ -297,7 +295,6 @@ function balise_POINTS_dist($p) { ...@@ -297,7 +295,6 @@ function balise_POINTS_dist($p) {
$b = $p->boucles[$b]->id_parent; $b = $p->boucles[$b]->id_parent;
} }
if (!$p->code) { if (!$p->code) {
include_local("inc-admin.php3");
erreur_squelette(_L("Champ #POINTS hors d'une recherche"), $p->id_boucle); erreur_squelette(_L("Champ #POINTS hors d'une recherche"), $p->id_boucle);
} }
$p->statut = 'php'; $p->statut = 'php';
...@@ -329,7 +326,6 @@ function balise_EXPOSER_dist($p) { ...@@ -329,7 +326,6 @@ function balise_EXPOSER_dist($p) {
$type_boucle = $p->type_requete; $type_boucle = $p->type_requete;
$primary_key = $table_primary[$type_boucle]; $primary_key = $table_primary[$type_boucle];
if (!$primary_key) { if (!$primary_key) {
include_local("inc-admin.php3");
erreur_squelette(_L("Champ #EXPOSER hors boucle"), $p->id_boucle); erreur_squelette(_L("Champ #EXPOSER hors boucle"), $p->id_boucle);
} }
$on = 'on'; $on = 'on';
...@@ -774,7 +770,6 @@ function balise_FORMULAIRE_SITE_dist($p) { ...@@ -774,7 +770,6 @@ function balise_FORMULAIRE_SITE_dist($p) {
function balise_distante_interdite($p) { function balise_distante_interdite($p) {
$nom = $p->id_boucle; $nom = $p->id_boucle;
if ($p->boucles[$nom]->sql_serveur) { if ($p->boucles[$nom]->sql_serveur) {
include_local("inc-admin.php3");
erreur_squelette($p->nom_champ ._L(" distant interdit"), $nom); erreur_squelette($p->nom_champ ._L(" distant interdit"), $nom);
} }
} }
......
...@@ -16,9 +16,7 @@ include_ecrire("inc_lang.php3"); ...@@ -16,9 +16,7 @@ include_ecrire("inc_lang.php3");
include_ecrire("inc_documents.php3"); include_ecrire("inc_documents.php3");
include_local("inc-forum.php3"); include_local("inc-forum.php3");
include_local("inc-calcul-outils.php3"); include_local("inc-calcul-outils.php3");
include_local("inc-admin.php3");
#include_local("inc-calcul_html"); # anciens noms des fichiers
#include_local("inc-calcul_mysql");
// Ce fichier peut contenir une affectation de $dossier_squelettes indiquant // Ce fichier peut contenir une affectation de $dossier_squelettes indiquant
...@@ -142,19 +140,17 @@ function cherche_page ($cache, $contexte, $fond, $id_rubrique, $lang='') { ...@@ -142,19 +140,17 @@ function cherche_page ($cache, $contexte, $fond, $id_rubrique, $lang='') {
if ($fonc = charger_squelette($skel)) if ($fonc = charger_squelette($skel))
$page = $fonc(array('cache' => $cache), array($contexte)); $page = $fonc(array('cache' => $cache), array($contexte));
// Passer la main au debuggueur) // Passer la main au debuggueur)
if ($GLOBALS['var_debug'] AND if ($GLOBALS['var_debug']
$GLOBALS['debug_objet'] == $fonc AND AND $GLOBALS['debug_objet'] == $fonc
$GLOBALS['debug_affiche'] == 'resultat') AND $GLOBALS['debug_affiche'] == 'resultat')
debug_dumpfile ($page['texte']); debug_dumpfile ($page['texte']);
} }
# flag pour spip_error_handler(), cf inc-admin ??
$page['squelette'] = $skel;
// Nettoyer le resultat si on est fou de XML // Nettoyer le resultat si on est fou de XML
if ($GLOBALS['xhtml']) { if ($GLOBALS['xhtml']) {
include_ecrire("inc_tidy.php"); include_ecrire("inc_tidy.php");
$page['texte'] = xhtml($page['texte']); $page['texte'] = xhtml($page['texte']);
} }
// Entrer les invalideurs dans la base // Entrer les invalideurs dans la base
...@@ -283,6 +279,8 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) { ...@@ -283,6 +279,8 @@ function calculer_page($chemin_cache, $elements, $delais, $inclusion=false) {
return $page; return $page;
} }
## tout ce qui suit devrait etre ailleurs : ecrire/inc_db_(mysql|pgsql).php3
// Cette fonction est systematiquement appelee par les squelettes // Cette fonction est systematiquement appelee par les squelettes
// pour constuire une requete SQL de type "lecture" (SELECT) a partir // pour constuire une requete SQL de type "lecture" (SELECT) a partir
// de chaque boucle. // de chaque boucle.
...@@ -331,12 +329,13 @@ function spip_abstract_select ( ...@@ -331,12 +329,13 @@ function spip_abstract_select (
} }
function spip_abstract_serveur($f, $serveur) { function spip_abstract_serveur($f, $serveur) {
if (function_exists($f)) return $f; if (function_exists($f))
include_local("inc-admin.php3"); return $f;
erreur_squelette(_L(' serveur SQL indefini'), $serveur);
erreur_squelette(_L(' serveur SQL indefini'), $serveur);
// hack pour continuer la chasse aux erreurs
return 'array'; // hack pour continuer la chasse aux erreurs
return 'array';
} }
// Les 3 fonctions suivantes exploitent le resultat de la precedente, // Les 3 fonctions suivantes exploitent le resultat de la precedente,
...@@ -363,8 +362,7 @@ function spip_abstract_free($res, $serveur='') ...@@ -363,8 +362,7 @@ function spip_abstract_free($res, $serveur='')
return $f($res); return $f($res);
} }
# une composition tellement fréquente... # une composition tellement frequente...
function spip_abstract_fetsel( function spip_abstract_fetsel(
$select = array(), $from = array(), $where = '', $select = array(), $from = array(), $where = '',
$groupby = '', $orderby = '', $limit = '', $groupby = '', $orderby = '', $limit = '',
......
...@@ -46,7 +46,6 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') { ...@@ -46,7 +46,6 @@ function index_pile($idb, $nom_champ, &$boucles, $explicite='') {
# spip_log("Go: idb='$idb' r='$r' c='$c' nom='$nom_champ' s=$s"); # spip_log("Go: idb='$idb' r='$r' c='$c' nom='$nom_champ' s=$s");
$desc = $tables_des_serveurs_sql[$s][$t]; $desc = $tables_des_serveurs_sql[$s][$t];
if (!$desc) { if (!$desc) {
include_local("inc-admin.php3");
erreur_squelette(_L("Table SQL \"$r\" inconnue"), "'$idb'"); erreur_squelette(_L("Table SQL \"$r\" inconnue"), "'$idb'");
# continuer pour chercher l'erreur suivante # continuer pour chercher l'erreur suivante
return "'#" . $r . ':' . $nom_champ . "'"; return "'#" . $r . ':' . $nom_champ . "'";
......
...@@ -542,13 +542,5 @@ function formulaire_ecrire_auteur($id_auteur, $email_auteur) { ...@@ -542,13 +542,5 @@ function formulaire_ecrire_auteur($id_auteur, $email_auteur) {
return $res; return $res;
} }
function formulaire_admin() {
if (!$GLOBALS['flag_preserver'] && ($GLOBALS['HTTP_COOKIE_VARS']['spip_admin'])) {
include_local('inc-admin.php3');
global $page, $cle, $fraicheur;
return afficher_boutons_admin($page, $cle, $fraicheur);
}
return '';
}
?> ?>
...@@ -47,7 +47,6 @@ function parser_texte($texte) { ...@@ -47,7 +47,6 @@ function parser_texte($texte) {
$champ->params = ''; $champ->params = '';
else { else {
if (!(ereg('^\\{(.*)\\}$', $p, $params))) { if (!(ereg('^\\{(.*)\\}$', $p, $params))) {
include_local("inc-admin.php3");
erreur_squelette(_L("Param&egrave;tres d'inclusion incorrects"), $s); erreur_squelette(_L("Param&egrave;tres d'inclusion incorrects"), $s);
} }
else else
...@@ -210,7 +209,6 @@ function parser_param($params, &$result) { ...@@ -210,7 +209,6 @@ function parser_param($params, &$result) {
} }
if ($params) { if ($params) {
include_local("inc-admin.php3");
erreur_squelette(($result->id_boucle . erreur_squelette(($result->id_boucle .
_L(": Param&egrave;tre $i (ou suivants) incorrect")), _L(": Param&egrave;tre $i (ou suivants) incorrect")),
$params); $params);
...@@ -241,7 +239,6 @@ function parser($texte, $id_parent, &$boucles, $nom) { ...@@ -241,7 +239,6 @@ function parser($texte, $id_parent, &$boucles, $nom) {
$debut = substr($texte, 0, $p); $debut = substr($texte, 0, $p);
$milieu = substr($texte, $p); $milieu = substr($texte, $p);
if (!ereg(BALISE_DE_BOUCLE, $milieu, $match)) { if (!ereg(BALISE_DE_BOUCLE, $milieu, $match)) {
include_local("inc-admin.php3");
erreur_squelette((_T('erreur_boucle_syntaxe')), $milieu); erreur_squelette((_T('erreur_boucle_syntaxe')), $milieu);
} }
$id_boucle = $match[1]; $id_boucle = $match[1];
...@@ -281,7 +278,6 @@ function parser($texte, $id_parent, &$boucles, $nom) { ...@@ -281,7 +278,6 @@ function parser($texte, $id_parent, &$boucles, $nom) {
} }
$milieu = substr($milieu, strlen($match[0])); $milieu = substr($milieu, strlen($match[0]));
if (strpos($milieu, $s)) { if (strpos($milieu, $s)) {
include_local("inc-admin.php3");
erreur_squelette(_T('erreur_boucle_syntaxe'), erreur_squelette(_T('erreur_boucle_syntaxe'),
$id_boucle . $id_boucle .
_L('&nbsp;: balise B en aval')); _L('&nbsp;: balise B en aval'));
...@@ -293,7 +289,6 @@ function parser($texte, $id_parent, &$boucles, $nom) { ...@@ -293,7 +289,6 @@ function parser($texte, $id_parent, &$boucles, $nom) {
$s = "</BOUCLE$id_boucle>"; $s = "</BOUCLE$id_boucle>";
$p = strpos($milieu, $s); $p = strpos($milieu, $s);
if ($p === false) { if ($p === false) {
include_local("inc-admin.php3");
erreur_squelette(_T('erreur_boucle_syntaxe'), erreur_squelette(_T('erreur_boucle_syntaxe'),
_T('erreur_boucle_fermant', _T('erreur_boucle_fermant',
array('id'=>$id_boucle))); array('id'=>$id_boucle)));
...@@ -329,7 +324,6 @@ function parser($texte, $id_parent, &$boucles, $nom) { ...@@ -329,7 +324,6 @@ function parser($texte, $id_parent, &$boucles, $nom) {
$all_res = array_merge($all_res, parser_champs_etendus($debut)); $all_res = array_merge($all_res, parser_champs_etendus($debut));
$all_res[] = $result; $all_res[] = $result;
if ($boucles[$id_boucle]) { if ($boucles[$id_boucle]) {
include_local("inc-admin.php3");
erreur_squelette(_T('erreur_boucle_syntaxe'), erreur_squelette(_T('erreur_boucle_syntaxe'),
_T('erreur_boucle_double', _T('erreur_boucle_double',
array('id'=>$id_boucle))); array('id'=>$id_boucle)));
......
...@@ -3,16 +3,11 @@ ...@@ -3,16 +3,11 @@
// Page inclue ? // Page inclue ?
if (defined("_INC_PUBLIC")) { if (defined("_INC_PUBLIC")) {
$page = inclure_page($fond, $delais, $contexte_inclus, $fichier_inclus); $page = inclure_page($fond, $delais, $contexte_inclus, $fichier_inclus);
$contenu = $page['texte'];
// Traiter var_recherche pour surligner les mots if ($page['process_ins'] == 'html')
if ($GLOBALS['var_recherche']) { echo $page['texte'];
include_ecrire("inc_surligne.php3"); else
$contenu = surligner_mots($contenu, $var_recherche); eval('?' . '>' . $page['texte']);
}
if ($page['process_ins'] == 'php') {
eval('?' . '>' . $contenu); // page 'php'
} else
echo $contenu; // page tout 'html'
if ($page['lang_select']) if ($page['lang_select'])
lang_dselect(); lang_dselect();
...@@ -73,13 +68,12 @@ else { ...@@ -73,13 +68,12 @@ else {
reponse_confirmation($id_article, $val_confirm); reponse_confirmation($id_article, $val_confirm);
} }
include_local ('inc-public-global.php3');
// demande de debug ? // demande de debug ?
if ($var_debug AND ($code_activation_debug == $var_debug if ($var_debug AND ($code_activation_debug == $var_debug
OR ($code_activation_debug == '' OR $auteur_session['statut'] == '0minirezo'
AND $auteur_session['statut'] == '0minirezo')
)) { )) {
include_local('inc-admin.php3');
$recalcul = 'oui'; $recalcul = 'oui';
$var_debug = true; $var_debug = true;
spip_log('debug !'); spip_log('debug !');
...@@ -88,17 +82,15 @@ else { ...@@ -88,17 +82,15 @@ else {
// Faut-il preparer les boutons d'admin ? // Faut-il preparer les boutons d'admin ?
$affiche_boutons_admin = (!$flag_preserver $affiche_boutons_admin = (!$flag_preserver
AND ($HTTP_COOKIE_VARS['spip_admin'] AND ($HTTP_COOKIE_VARS['spip_admin']
OR $HTTP_COOKIE_VARS['spip_debug'])); OR $HTTP_COOKIE_VARS['spip_debug']));
if ($affiche_boutons_admin)
// inc-admin contient aussi le traitement d'erreur include_local('inc-admin.php3');
include_local('inc-admin.php3');
include_local ("inc-public-global.php3");
$tableau_des_erreurs = array(); $tableau_des_erreurs = array();
$page = afficher_page_globale ($fond, $delais, $use_cache); $page = afficher_page_globale ($fond, $delais, $use_cache);
// Interdire au client de cacher un login, un admin ou un recalcul // Interdire au client de cacher un login, un admin ou un recalcul
if ($flag_dynamique OR ($recalcul == 'oui') if ($flag_dynamique OR ($recalcul == 'oui')
OR $HTTP_COOKIE_VARS['spip_admin']) { OR $HTTP_COOKIE_VARS['spip_admin']) {
@header("Cache-Control: no-cache,must-revalidate"); @header("Cache-Control: no-cache,must-revalidate");
...@@ -108,12 +100,52 @@ else { ...@@ -108,12 +100,52 @@ else {
@Header ("Last-Modified: ".http_gmoddate($lastmodified)." GMT"); @Header ("Last-Modified: ".http_gmoddate($lastmodified)." GMT");
@header("Content-Type: text/html; charset=".lire_meta('charset')); @header("Content-Type: text/html; charset=".lire_meta('charset'));
#entre gzip et debug, faut revoir
#@header('Content-Length: '.strlen($contenu));
# @header('Connection: close');
$contenu = $page['texte']; // Faudra-t-il post-traiter la page ?
spip_log($page['process_ins'] . strlen($contenu)); define('spip_active_ob', $flag_ob AND
($var_debug OR $var_recherche OR $affiche_boutons_admin));
// Cas d'une page contenant uniquement du HTML :
if ($page['process_ins'] == 'html') {
if (!spip_active_ob) {
echo $page['texte'];
$contenu = '';
} else
$contenu = $page['texte'];
}
// Cas d'une page contenant du PHP :
else {
// Evaluer la page
if (!spip_active_ob) {
$res = eval('?' . '>' . $page['texte']);
$contenu = '';
} else {
ob_start();
$res = eval('?' . '>' . $page['texte']);
$contenu = ob_get_contents();
ob_end_clean();
}
// en cas d'erreur afficher un message + demander boutons debug
if ($affiche_boutons_admin
AND $auteur_session['statut'] == '0minirezo') {
if (function_exists('restore_error_handler'))
restore_error_handler();
if ($res === false)
spip_error_handler(1,'erreur de compilation','','','');
}
}
// Passer la main au debuggueur le cas echeant
if ($var_debug) {
debug_dumpfile('');
exit;
} else if (count($tableau_des_erreurs) > 0)
affiche_erreurs_execution_page ();
// Traiter var_recherche pour surligner les mots // Traiter var_recherche pour surligner les mots
if ($var_recherche) { if ($var_recherche) {
include_ecrire("inc_surligne.php3"); include_ecrire("inc_surligne.php3");
...@@ -123,58 +155,10 @@ else { ...@@ -123,58 +155,10 @@ else {
// Ajouter les boutons admins (les normaux) // Ajouter les boutons admins (les normaux)
if ($affiche_boutons_admin) if ($affiche_boutons_admin)
$contenu = calcul_admin_page($use_cache, $contenu); $contenu = calcul_admin_page($use_cache, $contenu);
spip_log($page['process_ins'] . $contenu);
if ($page['process_ins'] == 'html')
{if (!$var_debug) echo $contenu;}
else {
// Ici on va ruser pour intercepter les erreurs (meme les FATAL)
// dans le eval : on envoie le bouton debug, et on le supprime
// de l'autre cote ; de cette facon, si on traverse sans encombre,
// on est propre, et sinon on a le bouton
if ($affiche_boutons_admin) { echo $contenu;
// recuperer les parse errors etc., type "FATAL" (cf. infra)
if ($auteur_session['statut'] == '0minirezo') {
$page_principale = $page;
if (function_exists('set_error_handler'))
set_error_handler('spip_error_handler');
}
}
// terminer_public_global($use_cache, $page['cache']);
// Evaluer la page php
//
if (!$var_debug)
$res = eval('?' . '>' . $contenu);
else {
ob_start();
$res = eval('?' . '>' . $contenu);
$contenu = ob_get_contents();
ob_end_clean();
}
// en cas d'erreur afficher un message + demander les boutons de debug
if ($affiche_boutons_admin
AND $auteur_session['statut'] == '0minirezo') {
if (function_exists('restore_error_handler'))
restore_error_handler();
if ($res === false)
spip_error_handler(1,'erreur de compilation','','','');
}
}
// Passer la main au debuggueur le cas echeant
if ($var_debug)
debug_dumpfile('');
else {
if (count($tableau_des_erreurs) > 0)
affiche_erreurs_execution_page ();
}
terminer_public_global($use_cache, $page['cache']);
} }
?> ?>
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